package info.unlp.tesis.parser.antlr.internal; 

import java.io.InputStream;
import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.xtext.parsetree.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.common.util.Enumerator;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import org.eclipse.xtext.conversion.ValueConverterException;
import info.unlp.tesis.services.TransformationGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalTransformationParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_STRING", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'transformation'", "'('", "','", "')'", "';'", "':'", "'modelType'", "'strict uses'", "'main'", "'{'", "'}'", "'if'", "'then'", "'else'", "':='", "'null'", "'break'", "'continue'", "'while'", "'var'", "'string'", "'integer'", "'boolean'", "'in'", "'inout'", "'out'", "'true'", "'false'", "'and'", "'or'", "'not'", "'<'", "'>'", "'='", "'<>'", "'+'", "'-'", "'/'", "'*'"
    };
    public static final int RULE_ID=4;
    public static final int RULE_STRING=5;
    public static final int RULE_ANY_OTHER=10;
    public static final int RULE_INT=6;
    public static final int RULE_WS=9;
    public static final int RULE_SL_COMMENT=8;
    public static final int EOF=-1;
    public static final int RULE_ML_COMMENT=7;

        public InternalTransformationParser(TokenStream input) {
            super(input);
        }
        

    public String[] getTokenNames() { return tokenNames; }
    public String getGrammarFileName() { return "../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g"; }



     	private TransformationGrammarAccess grammarAccess;
     	
        public InternalTransformationParser(TokenStream input, IAstFactory factory, TransformationGrammarAccess grammarAccess) {
            this(input);
            this.factory = factory;
            registerRules(grammarAccess.getGrammar());
            this.grammarAccess = grammarAccess;
        }
        
        @Override
        protected InputStream getTokenFile() {
        	ClassLoader classLoader = getClass().getClassLoader();
        	return classLoader.getResourceAsStream("info/unlp/tesis/parser/antlr/internal/InternalTransformation.tokens");
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "OperationalTransformation";	
       	}
       	
       	@Override
       	protected TransformationGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start entryRuleOperationalTransformation
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:78:1: entryRuleOperationalTransformation returns [EObject current=null] : iv_ruleOperationalTransformation= ruleOperationalTransformation EOF ;
    public final EObject entryRuleOperationalTransformation() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleOperationalTransformation = null;


        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:79:2: (iv_ruleOperationalTransformation= ruleOperationalTransformation EOF )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:80:2: iv_ruleOperationalTransformation= ruleOperationalTransformation EOF
            {
             currentNode = createCompositeNode(grammarAccess.getOperationalTransformationRule(), currentNode); 
            pushFollow(FOLLOW_ruleOperationalTransformation_in_entryRuleOperationalTransformation75);
            iv_ruleOperationalTransformation=ruleOperationalTransformation();
            _fsp--;

             current =iv_ruleOperationalTransformation; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleOperationalTransformation85); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleOperationalTransformation


    // $ANTLR start ruleOperationalTransformation
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:87:1: ruleOperationalTransformation returns [EObject current=null] : ( ( (lv_modelType_0_0= ruleModelType ) )+ 'transformation' ( (lv_name_2_0= RULE_ID ) ) '(' ( (lv_modelParameter_4_0= ruleModelParameter ) ) ( ',' ( (lv_modelParameter_6_0= ruleModelParameter ) ) )* ')' ( ';' )? ( (lv_ownedOperation_9_0= ruleEntryOperation ) )? ) ;
    public final EObject ruleOperationalTransformation() throws RecognitionException {
        EObject current = null;

        Token lv_name_2_0=null;
        EObject lv_modelType_0_0 = null;

        EObject lv_modelParameter_4_0 = null;

        EObject lv_modelParameter_6_0 = null;

        EObject lv_ownedOperation_9_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:92:6: ( ( ( (lv_modelType_0_0= ruleModelType ) )+ 'transformation' ( (lv_name_2_0= RULE_ID ) ) '(' ( (lv_modelParameter_4_0= ruleModelParameter ) ) ( ',' ( (lv_modelParameter_6_0= ruleModelParameter ) ) )* ')' ( ';' )? ( (lv_ownedOperation_9_0= ruleEntryOperation ) )? ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:93:1: ( ( (lv_modelType_0_0= ruleModelType ) )+ 'transformation' ( (lv_name_2_0= RULE_ID ) ) '(' ( (lv_modelParameter_4_0= ruleModelParameter ) ) ( ',' ( (lv_modelParameter_6_0= ruleModelParameter ) ) )* ')' ( ';' )? ( (lv_ownedOperation_9_0= ruleEntryOperation ) )? )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:93:1: ( ( (lv_modelType_0_0= ruleModelType ) )+ 'transformation' ( (lv_name_2_0= RULE_ID ) ) '(' ( (lv_modelParameter_4_0= ruleModelParameter ) ) ( ',' ( (lv_modelParameter_6_0= ruleModelParameter ) ) )* ')' ( ';' )? ( (lv_ownedOperation_9_0= ruleEntryOperation ) )? )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:93:2: ( (lv_modelType_0_0= ruleModelType ) )+ 'transformation' ( (lv_name_2_0= RULE_ID ) ) '(' ( (lv_modelParameter_4_0= ruleModelParameter ) ) ( ',' ( (lv_modelParameter_6_0= ruleModelParameter ) ) )* ')' ( ';' )? ( (lv_ownedOperation_9_0= ruleEntryOperation ) )?
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:93:2: ( (lv_modelType_0_0= ruleModelType ) )+
            int cnt1=0;
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==17) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:94:1: (lv_modelType_0_0= ruleModelType )
            	    {
            	    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:94:1: (lv_modelType_0_0= ruleModelType )
            	    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:95:3: lv_modelType_0_0= ruleModelType
            	    {
            	     
            	    	        currentNode=createCompositeNode(grammarAccess.getOperationalTransformationAccess().getModelTypeModelTypeParserRuleCall_0_0(), currentNode); 
            	    	    
            	    pushFollow(FOLLOW_ruleModelType_in_ruleOperationalTransformation131);
            	    lv_modelType_0_0=ruleModelType();
            	    _fsp--;


            	    	        if (current==null) {
            	    	            current = factory.create(grammarAccess.getOperationalTransformationRule().getType().getClassifier());
            	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	        }
            	    	        try {
            	    	       		add(
            	    	       			current, 
            	    	       			"modelType",
            	    	        		lv_modelType_0_0, 
            	    	        		"ModelType", 
            	    	        		currentNode);
            	    	        } catch (ValueConverterException vce) {
            	    				handleValueConverterException(vce);
            	    	        }
            	    	        currentNode = currentNode.getParent();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt1 >= 1 ) break loop1;
                        EarlyExitException eee =
                            new EarlyExitException(1, input);
                        throw eee;
                }
                cnt1++;
            } while (true);

            match(input,11,FOLLOW_11_in_ruleOperationalTransformation142); 

                    createLeafNode(grammarAccess.getOperationalTransformationAccess().getTransformationKeyword_1(), null); 
                
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:121:1: ( (lv_name_2_0= RULE_ID ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:122:1: (lv_name_2_0= RULE_ID )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:122:1: (lv_name_2_0= RULE_ID )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:123:3: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)input.LT(1);
            match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleOperationalTransformation159); 

            			createLeafNode(grammarAccess.getOperationalTransformationAccess().getNameIDTerminalRuleCall_2_0(), "name"); 
            		

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getOperationalTransformationRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"name",
            	        		lv_name_2_0, 
            	        		"ID", 
            	        		lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }


            }

            match(input,12,FOLLOW_12_in_ruleOperationalTransformation174); 

                    createLeafNode(grammarAccess.getOperationalTransformationAccess().getLeftParenthesisKeyword_3(), null); 
                
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:149:1: ( (lv_modelParameter_4_0= ruleModelParameter ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:150:1: (lv_modelParameter_4_0= ruleModelParameter )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:150:1: (lv_modelParameter_4_0= ruleModelParameter )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:151:3: lv_modelParameter_4_0= ruleModelParameter
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getOperationalTransformationAccess().getModelParameterModelParameterParserRuleCall_4_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleModelParameter_in_ruleOperationalTransformation195);
            lv_modelParameter_4_0=ruleModelParameter();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getOperationalTransformationRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		add(
            	       			current, 
            	       			"modelParameter",
            	        		lv_modelParameter_4_0, 
            	        		"ModelParameter", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }

            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:173:2: ( ',' ( (lv_modelParameter_6_0= ruleModelParameter ) ) )*
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( (LA2_0==13) ) {
                    alt2=1;
                }


                switch (alt2) {
            	case 1 :
            	    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:173:4: ',' ( (lv_modelParameter_6_0= ruleModelParameter ) )
            	    {
            	    match(input,13,FOLLOW_13_in_ruleOperationalTransformation206); 

            	            createLeafNode(grammarAccess.getOperationalTransformationAccess().getCommaKeyword_5_0(), null); 
            	        
            	    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:177:1: ( (lv_modelParameter_6_0= ruleModelParameter ) )
            	    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:178:1: (lv_modelParameter_6_0= ruleModelParameter )
            	    {
            	    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:178:1: (lv_modelParameter_6_0= ruleModelParameter )
            	    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:179:3: lv_modelParameter_6_0= ruleModelParameter
            	    {
            	     
            	    	        currentNode=createCompositeNode(grammarAccess.getOperationalTransformationAccess().getModelParameterModelParameterParserRuleCall_5_1_0(), currentNode); 
            	    	    
            	    pushFollow(FOLLOW_ruleModelParameter_in_ruleOperationalTransformation227);
            	    lv_modelParameter_6_0=ruleModelParameter();
            	    _fsp--;


            	    	        if (current==null) {
            	    	            current = factory.create(grammarAccess.getOperationalTransformationRule().getType().getClassifier());
            	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	        }
            	    	        try {
            	    	       		add(
            	    	       			current, 
            	    	       			"modelParameter",
            	    	        		lv_modelParameter_6_0, 
            	    	        		"ModelParameter", 
            	    	        		currentNode);
            	    	        } catch (ValueConverterException vce) {
            	    				handleValueConverterException(vce);
            	    	        }
            	    	        currentNode = currentNode.getParent();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop2;
                }
            } while (true);

            match(input,14,FOLLOW_14_in_ruleOperationalTransformation239); 

                    createLeafNode(grammarAccess.getOperationalTransformationAccess().getRightParenthesisKeyword_6(), null); 
                
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:205:1: ( ';' )?
            int alt3=2;
            int LA3_0 = input.LA(1);

            if ( (LA3_0==15) ) {
                alt3=1;
            }
            switch (alt3) {
                case 1 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:205:3: ';'
                    {
                    match(input,15,FOLLOW_15_in_ruleOperationalTransformation250); 

                            createLeafNode(grammarAccess.getOperationalTransformationAccess().getSemicolonKeyword_7(), null); 
                        

                    }
                    break;

            }

            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:209:3: ( (lv_ownedOperation_9_0= ruleEntryOperation ) )?
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( (LA4_0==19) ) {
                alt4=1;
            }
            switch (alt4) {
                case 1 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:210:1: (lv_ownedOperation_9_0= ruleEntryOperation )
                    {
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:210:1: (lv_ownedOperation_9_0= ruleEntryOperation )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:211:3: lv_ownedOperation_9_0= ruleEntryOperation
                    {
                     
                    	        currentNode=createCompositeNode(grammarAccess.getOperationalTransformationAccess().getOwnedOperationEntryOperationParserRuleCall_8_0(), currentNode); 
                    	    
                    pushFollow(FOLLOW_ruleEntryOperation_in_ruleOperationalTransformation273);
                    lv_ownedOperation_9_0=ruleEntryOperation();
                    _fsp--;


                    	        if (current==null) {
                    	            current = factory.create(grammarAccess.getOperationalTransformationRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode.getParent(), current);
                    	        }
                    	        try {
                    	       		set(
                    	       			current, 
                    	       			"ownedOperation",
                    	        		lv_ownedOperation_9_0, 
                    	        		"EntryOperation", 
                    	        		currentNode);
                    	        } catch (ValueConverterException vce) {
                    				handleValueConverterException(vce);
                    	        }
                    	        currentNode = currentNode.getParent();
                    	    

                    }


                    }
                    break;

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleOperationalTransformation


    // $ANTLR start entryRuleModelParameter
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:243:1: entryRuleModelParameter returns [EObject current=null] : iv_ruleModelParameter= ruleModelParameter EOF ;
    public final EObject entryRuleModelParameter() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleModelParameter = null;


        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:244:2: (iv_ruleModelParameter= ruleModelParameter EOF )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:245:2: iv_ruleModelParameter= ruleModelParameter EOF
            {
             currentNode = createCompositeNode(grammarAccess.getModelParameterRule(), currentNode); 
            pushFollow(FOLLOW_ruleModelParameter_in_entryRuleModelParameter312);
            iv_ruleModelParameter=ruleModelParameter();
            _fsp--;

             current =iv_ruleModelParameter; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleModelParameter322); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleModelParameter


    // $ANTLR start ruleModelParameter
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:252:1: ruleModelParameter returns [EObject current=null] : ( ( (lv_kind_0_0= ruleDirectionKind ) ) ( (lv_name_1_0= RULE_ID ) ) ':' ( ( RULE_ID ) ) ) ;
    public final EObject ruleModelParameter() throws RecognitionException {
        EObject current = null;

        Token lv_name_1_0=null;
        Enumerator lv_kind_0_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:257:6: ( ( ( (lv_kind_0_0= ruleDirectionKind ) ) ( (lv_name_1_0= RULE_ID ) ) ':' ( ( RULE_ID ) ) ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:258:1: ( ( (lv_kind_0_0= ruleDirectionKind ) ) ( (lv_name_1_0= RULE_ID ) ) ':' ( ( RULE_ID ) ) )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:258:1: ( ( (lv_kind_0_0= ruleDirectionKind ) ) ( (lv_name_1_0= RULE_ID ) ) ':' ( ( RULE_ID ) ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:258:2: ( (lv_kind_0_0= ruleDirectionKind ) ) ( (lv_name_1_0= RULE_ID ) ) ':' ( ( RULE_ID ) )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:258:2: ( (lv_kind_0_0= ruleDirectionKind ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:259:1: (lv_kind_0_0= ruleDirectionKind )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:259:1: (lv_kind_0_0= ruleDirectionKind )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:260:3: lv_kind_0_0= ruleDirectionKind
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getModelParameterAccess().getKindDirectionKindEnumRuleCall_0_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleDirectionKind_in_ruleModelParameter368);
            lv_kind_0_0=ruleDirectionKind();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getModelParameterRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"kind",
            	        		lv_kind_0_0, 
            	        		"DirectionKind", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }

            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:282:2: ( (lv_name_1_0= RULE_ID ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:283:1: (lv_name_1_0= RULE_ID )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:283:1: (lv_name_1_0= RULE_ID )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:284:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)input.LT(1);
            match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleModelParameter385); 

            			createLeafNode(grammarAccess.getModelParameterAccess().getNameIDTerminalRuleCall_1_0(), "name"); 
            		

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getModelParameterRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"name",
            	        		lv_name_1_0, 
            	        		"ID", 
            	        		lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }


            }

            match(input,16,FOLLOW_16_in_ruleModelParameter400); 

                    createLeafNode(grammarAccess.getModelParameterAccess().getColonKeyword_2(), null); 
                
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:310:1: ( ( RULE_ID ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:311:1: ( RULE_ID )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:311:1: ( RULE_ID )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:312:3: RULE_ID
            {

            			if (current==null) {
            	            current = factory.create(grammarAccess.getModelParameterRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
                    
            match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleModelParameter418); 

            		createLeafNode(grammarAccess.getModelParameterAccess().getModelTypeModelTypeCrossReference_3_0(), "modelType"); 
            	

            }


            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleModelParameter


    // $ANTLR start entryRuleModelType
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:332:1: entryRuleModelType returns [EObject current=null] : iv_ruleModelType= ruleModelType EOF ;
    public final EObject entryRuleModelType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleModelType = null;


        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:333:2: (iv_ruleModelType= ruleModelType EOF )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:334:2: iv_ruleModelType= ruleModelType EOF
            {
             currentNode = createCompositeNode(grammarAccess.getModelTypeRule(), currentNode); 
            pushFollow(FOLLOW_ruleModelType_in_entryRuleModelType454);
            iv_ruleModelType=ruleModelType();
            _fsp--;

             current =iv_ruleModelType; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleModelType464); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleModelType


    // $ANTLR start ruleModelType
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:341:1: ruleModelType returns [EObject current=null] : ( 'modelType' ( (lv_name_1_0= RULE_ID ) ) 'strict uses' ( (lv_uri_3_0= RULE_STRING ) ) ';' ) ;
    public final EObject ruleModelType() throws RecognitionException {
        EObject current = null;

        Token lv_name_1_0=null;
        Token lv_uri_3_0=null;

         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:346:6: ( ( 'modelType' ( (lv_name_1_0= RULE_ID ) ) 'strict uses' ( (lv_uri_3_0= RULE_STRING ) ) ';' ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:347:1: ( 'modelType' ( (lv_name_1_0= RULE_ID ) ) 'strict uses' ( (lv_uri_3_0= RULE_STRING ) ) ';' )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:347:1: ( 'modelType' ( (lv_name_1_0= RULE_ID ) ) 'strict uses' ( (lv_uri_3_0= RULE_STRING ) ) ';' )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:347:3: 'modelType' ( (lv_name_1_0= RULE_ID ) ) 'strict uses' ( (lv_uri_3_0= RULE_STRING ) ) ';'
            {
            match(input,17,FOLLOW_17_in_ruleModelType499); 

                    createLeafNode(grammarAccess.getModelTypeAccess().getModelTypeKeyword_0(), null); 
                
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:351:1: ( (lv_name_1_0= RULE_ID ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:352:1: (lv_name_1_0= RULE_ID )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:352:1: (lv_name_1_0= RULE_ID )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:353:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)input.LT(1);
            match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleModelType516); 

            			createLeafNode(grammarAccess.getModelTypeAccess().getNameIDTerminalRuleCall_1_0(), "name"); 
            		

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getModelTypeRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"name",
            	        		lv_name_1_0, 
            	        		"ID", 
            	        		lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }


            }

            match(input,18,FOLLOW_18_in_ruleModelType531); 

                    createLeafNode(grammarAccess.getModelTypeAccess().getStrictUsesKeyword_2(), null); 
                
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:379:1: ( (lv_uri_3_0= RULE_STRING ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:380:1: (lv_uri_3_0= RULE_STRING )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:380:1: (lv_uri_3_0= RULE_STRING )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:381:3: lv_uri_3_0= RULE_STRING
            {
            lv_uri_3_0=(Token)input.LT(1);
            match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleModelType548); 

            			createLeafNode(grammarAccess.getModelTypeAccess().getUriSTRINGTerminalRuleCall_3_0(), "uri"); 
            		

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getModelTypeRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"uri",
            	        		lv_uri_3_0, 
            	        		"STRING", 
            	        		lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }


            }

            match(input,15,FOLLOW_15_in_ruleModelType563); 

                    createLeafNode(grammarAccess.getModelTypeAccess().getSemicolonKeyword_4(), null); 
                

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleModelType


    // $ANTLR start entryRuleOperationBody
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:417:1: entryRuleOperationBody returns [EObject current=null] : iv_ruleOperationBody= ruleOperationBody EOF ;
    public final EObject entryRuleOperationBody() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleOperationBody = null;


        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:418:2: (iv_ruleOperationBody= ruleOperationBody EOF )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:419:2: iv_ruleOperationBody= ruleOperationBody EOF
            {
             currentNode = createCompositeNode(grammarAccess.getOperationBodyRule(), currentNode); 
            pushFollow(FOLLOW_ruleOperationBody_in_entryRuleOperationBody601);
            iv_ruleOperationBody=ruleOperationBody();
            _fsp--;

             current =iv_ruleOperationBody; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleOperationBody611); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleOperationBody


    // $ANTLR start ruleOperationBody
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:426:1: ruleOperationBody returns [EObject current=null] : ( (lv_content_0_0= ruleSeqExp ) ) ;
    public final EObject ruleOperationBody() throws RecognitionException {
        EObject current = null;

        EObject lv_content_0_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:431:6: ( ( (lv_content_0_0= ruleSeqExp ) ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:432:1: ( (lv_content_0_0= ruleSeqExp ) )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:432:1: ( (lv_content_0_0= ruleSeqExp ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:433:1: (lv_content_0_0= ruleSeqExp )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:433:1: (lv_content_0_0= ruleSeqExp )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:434:3: lv_content_0_0= ruleSeqExp
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getOperationBodyAccess().getContentSeqExpParserRuleCall_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleSeqExp_in_ruleOperationBody656);
            lv_content_0_0=ruleSeqExp();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getOperationBodyRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"content",
            	        		lv_content_0_0, 
            	        		"SeqExp", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleOperationBody


    // $ANTLR start entryRuleEntryOperation
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:464:1: entryRuleEntryOperation returns [EObject current=null] : iv_ruleEntryOperation= ruleEntryOperation EOF ;
    public final EObject entryRuleEntryOperation() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEntryOperation = null;


        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:465:2: (iv_ruleEntryOperation= ruleEntryOperation EOF )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:466:2: iv_ruleEntryOperation= ruleEntryOperation EOF
            {
             currentNode = createCompositeNode(grammarAccess.getEntryOperationRule(), currentNode); 
            pushFollow(FOLLOW_ruleEntryOperation_in_entryRuleEntryOperation691);
            iv_ruleEntryOperation=ruleEntryOperation();
            _fsp--;

             current =iv_ruleEntryOperation; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleEntryOperation701); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleEntryOperation


    // $ANTLR start ruleEntryOperation
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:473:1: ruleEntryOperation returns [EObject current=null] : ( ( (lv_name_0_0= 'main' ) ) '{' ( (lv_body_2_0= ruleOperationBody ) ) '}' ) ;
    public final EObject ruleEntryOperation() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        EObject lv_body_2_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:478:6: ( ( ( (lv_name_0_0= 'main' ) ) '{' ( (lv_body_2_0= ruleOperationBody ) ) '}' ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:479:1: ( ( (lv_name_0_0= 'main' ) ) '{' ( (lv_body_2_0= ruleOperationBody ) ) '}' )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:479:1: ( ( (lv_name_0_0= 'main' ) ) '{' ( (lv_body_2_0= ruleOperationBody ) ) '}' )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:479:2: ( (lv_name_0_0= 'main' ) ) '{' ( (lv_body_2_0= ruleOperationBody ) ) '}'
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:479:2: ( (lv_name_0_0= 'main' ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:480:1: (lv_name_0_0= 'main' )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:480:1: (lv_name_0_0= 'main' )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:481:3: lv_name_0_0= 'main'
            {
            lv_name_0_0=(Token)input.LT(1);
            match(input,19,FOLLOW_19_in_ruleEntryOperation744); 

                    createLeafNode(grammarAccess.getEntryOperationAccess().getNameMainKeyword_0_0(), "name"); 
                

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getEntryOperationRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "name", lv_name_0_0, "main", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }


            }

            match(input,20,FOLLOW_20_in_ruleEntryOperation767); 

                    createLeafNode(grammarAccess.getEntryOperationAccess().getLeftCurlyBracketKeyword_1(), null); 
                
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:504:1: ( (lv_body_2_0= ruleOperationBody ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:505:1: (lv_body_2_0= ruleOperationBody )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:505:1: (lv_body_2_0= ruleOperationBody )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:506:3: lv_body_2_0= ruleOperationBody
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getEntryOperationAccess().getBodyOperationBodyParserRuleCall_2_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleOperationBody_in_ruleEntryOperation788);
            lv_body_2_0=ruleOperationBody();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getEntryOperationRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"body",
            	        		lv_body_2_0, 
            	        		"OperationBody", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }

            match(input,21,FOLLOW_21_in_ruleEntryOperation798); 

                    createLeafNode(grammarAccess.getEntryOperationAccess().getRightCurlyBracketKeyword_3(), null); 
                

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleEntryOperation


    // $ANTLR start entryRuleOCLExpression
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:540:1: entryRuleOCLExpression returns [EObject current=null] : iv_ruleOCLExpression= ruleOCLExpression EOF ;
    public final EObject entryRuleOCLExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleOCLExpression = null;


        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:541:2: (iv_ruleOCLExpression= ruleOCLExpression EOF )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:542:2: iv_ruleOCLExpression= ruleOCLExpression EOF
            {
             currentNode = createCompositeNode(grammarAccess.getOCLExpressionRule(), currentNode); 
            pushFollow(FOLLOW_ruleOCLExpression_in_entryRuleOCLExpression834);
            iv_ruleOCLExpression=ruleOCLExpression();
            _fsp--;

             current =iv_ruleOCLExpression; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleOCLExpression844); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleOCLExpression


    // $ANTLR start ruleOCLExpression
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:549:1: ruleOCLExpression returns [EObject current=null] : (this_BooleanLiteralExp_0= ruleBooleanLiteralExp | this_ImperativeExpression_1= ruleImperativeExpression | this_StringLiteralExp_2= ruleStringLiteralExp | this_IntegerLiteralExp_3= ruleIntegerLiteralExp | this_OperationCallExp_4= ruleOperationCallExp ) ;
    public final EObject ruleOCLExpression() throws RecognitionException {
        EObject current = null;

        EObject this_BooleanLiteralExp_0 = null;

        EObject this_ImperativeExpression_1 = null;

        EObject this_StringLiteralExp_2 = null;

        EObject this_IntegerLiteralExp_3 = null;

        EObject this_OperationCallExp_4 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:554:6: ( (this_BooleanLiteralExp_0= ruleBooleanLiteralExp | this_ImperativeExpression_1= ruleImperativeExpression | this_StringLiteralExp_2= ruleStringLiteralExp | this_IntegerLiteralExp_3= ruleIntegerLiteralExp | this_OperationCallExp_4= ruleOperationCallExp ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:555:1: (this_BooleanLiteralExp_0= ruleBooleanLiteralExp | this_ImperativeExpression_1= ruleImperativeExpression | this_StringLiteralExp_2= ruleStringLiteralExp | this_IntegerLiteralExp_3= ruleIntegerLiteralExp | this_OperationCallExp_4= ruleOperationCallExp )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:555:1: (this_BooleanLiteralExp_0= ruleBooleanLiteralExp | this_ImperativeExpression_1= ruleImperativeExpression | this_StringLiteralExp_2= ruleStringLiteralExp | this_IntegerLiteralExp_3= ruleIntegerLiteralExp | this_OperationCallExp_4= ruleOperationCallExp )
            int alt5=5;
            switch ( input.LA(1) ) {
            case 37:
            case 38:
                {
                alt5=1;
                }
                break;
            case RULE_ID:
            case 22:
            case 26:
            case 27:
            case 28:
            case 29:
            case 30:
                {
                alt5=2;
                }
                break;
            case RULE_STRING:
                {
                alt5=3;
                }
                break;
            case RULE_INT:
                {
                alt5=4;
                }
                break;
            case 12:
            case 39:
            case 40:
            case 41:
            case 42:
            case 43:
            case 44:
            case 45:
            case 46:
            case 47:
            case 48:
            case 49:
                {
                alt5=5;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("555:1: (this_BooleanLiteralExp_0= ruleBooleanLiteralExp | this_ImperativeExpression_1= ruleImperativeExpression | this_StringLiteralExp_2= ruleStringLiteralExp | this_IntegerLiteralExp_3= ruleIntegerLiteralExp | this_OperationCallExp_4= ruleOperationCallExp )", 5, 0, input);

                throw nvae;
            }

            switch (alt5) {
                case 1 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:556:5: this_BooleanLiteralExp_0= ruleBooleanLiteralExp
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getOCLExpressionAccess().getBooleanLiteralExpParserRuleCall_0(), currentNode); 
                        
                    pushFollow(FOLLOW_ruleBooleanLiteralExp_in_ruleOCLExpression891);
                    this_BooleanLiteralExp_0=ruleBooleanLiteralExp();
                    _fsp--;

                     
                            current = this_BooleanLiteralExp_0; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;
                case 2 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:566:5: this_ImperativeExpression_1= ruleImperativeExpression
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getOCLExpressionAccess().getImperativeExpressionParserRuleCall_1(), currentNode); 
                        
                    pushFollow(FOLLOW_ruleImperativeExpression_in_ruleOCLExpression918);
                    this_ImperativeExpression_1=ruleImperativeExpression();
                    _fsp--;

                     
                            current = this_ImperativeExpression_1; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;
                case 3 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:576:5: this_StringLiteralExp_2= ruleStringLiteralExp
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getOCLExpressionAccess().getStringLiteralExpParserRuleCall_2(), currentNode); 
                        
                    pushFollow(FOLLOW_ruleStringLiteralExp_in_ruleOCLExpression945);
                    this_StringLiteralExp_2=ruleStringLiteralExp();
                    _fsp--;

                     
                            current = this_StringLiteralExp_2; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;
                case 4 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:586:5: this_IntegerLiteralExp_3= ruleIntegerLiteralExp
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getOCLExpressionAccess().getIntegerLiteralExpParserRuleCall_3(), currentNode); 
                        
                    pushFollow(FOLLOW_ruleIntegerLiteralExp_in_ruleOCLExpression972);
                    this_IntegerLiteralExp_3=ruleIntegerLiteralExp();
                    _fsp--;

                     
                            current = this_IntegerLiteralExp_3; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;
                case 5 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:596:5: this_OperationCallExp_4= ruleOperationCallExp
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getOCLExpressionAccess().getOperationCallExpParserRuleCall_4(), currentNode); 
                        
                    pushFollow(FOLLOW_ruleOperationCallExp_in_ruleOCLExpression999);
                    this_OperationCallExp_4=ruleOperationCallExp();
                    _fsp--;

                     
                            current = this_OperationCallExp_4; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleOCLExpression


    // $ANTLR start entryRuleIfExp
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:612:1: entryRuleIfExp returns [EObject current=null] : iv_ruleIfExp= ruleIfExp EOF ;
    public final EObject entryRuleIfExp() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleIfExp = null;


        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:613:2: (iv_ruleIfExp= ruleIfExp EOF )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:614:2: iv_ruleIfExp= ruleIfExp EOF
            {
             currentNode = createCompositeNode(grammarAccess.getIfExpRule(), currentNode); 
            pushFollow(FOLLOW_ruleIfExp_in_entryRuleIfExp1034);
            iv_ruleIfExp=ruleIfExp();
            _fsp--;

             current =iv_ruleIfExp; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleIfExp1044); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleIfExp


    // $ANTLR start ruleIfExp
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:621:1: ruleIfExp returns [EObject current=null] : ( 'if' '(' ( (lv_condition_2_0= ruleOCLExpression ) ) ')' 'then' '{' ( (lv_thenExpression_6_0= ruleOCLExpression ) ) '}' 'else' '{' ( (lv_elseExpression_10_0= ruleOCLExpression ) ) '}' ) ;
    public final EObject ruleIfExp() throws RecognitionException {
        EObject current = null;

        EObject lv_condition_2_0 = null;

        EObject lv_thenExpression_6_0 = null;

        EObject lv_elseExpression_10_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:626:6: ( ( 'if' '(' ( (lv_condition_2_0= ruleOCLExpression ) ) ')' 'then' '{' ( (lv_thenExpression_6_0= ruleOCLExpression ) ) '}' 'else' '{' ( (lv_elseExpression_10_0= ruleOCLExpression ) ) '}' ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:627:1: ( 'if' '(' ( (lv_condition_2_0= ruleOCLExpression ) ) ')' 'then' '{' ( (lv_thenExpression_6_0= ruleOCLExpression ) ) '}' 'else' '{' ( (lv_elseExpression_10_0= ruleOCLExpression ) ) '}' )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:627:1: ( 'if' '(' ( (lv_condition_2_0= ruleOCLExpression ) ) ')' 'then' '{' ( (lv_thenExpression_6_0= ruleOCLExpression ) ) '}' 'else' '{' ( (lv_elseExpression_10_0= ruleOCLExpression ) ) '}' )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:627:3: 'if' '(' ( (lv_condition_2_0= ruleOCLExpression ) ) ')' 'then' '{' ( (lv_thenExpression_6_0= ruleOCLExpression ) ) '}' 'else' '{' ( (lv_elseExpression_10_0= ruleOCLExpression ) ) '}'
            {
            match(input,22,FOLLOW_22_in_ruleIfExp1079); 

                    createLeafNode(grammarAccess.getIfExpAccess().getIfKeyword_0(), null); 
                
            match(input,12,FOLLOW_12_in_ruleIfExp1089); 

                    createLeafNode(grammarAccess.getIfExpAccess().getLeftParenthesisKeyword_1(), null); 
                
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:635:1: ( (lv_condition_2_0= ruleOCLExpression ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:636:1: (lv_condition_2_0= ruleOCLExpression )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:636:1: (lv_condition_2_0= ruleOCLExpression )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:637:3: lv_condition_2_0= ruleOCLExpression
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getIfExpAccess().getConditionOCLExpressionParserRuleCall_2_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleOCLExpression_in_ruleIfExp1110);
            lv_condition_2_0=ruleOCLExpression();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getIfExpRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"condition",
            	        		lv_condition_2_0, 
            	        		"OCLExpression", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }

            match(input,14,FOLLOW_14_in_ruleIfExp1120); 

                    createLeafNode(grammarAccess.getIfExpAccess().getRightParenthesisKeyword_3(), null); 
                
            match(input,23,FOLLOW_23_in_ruleIfExp1130); 

                    createLeafNode(grammarAccess.getIfExpAccess().getThenKeyword_4(), null); 
                
            match(input,20,FOLLOW_20_in_ruleIfExp1140); 

                    createLeafNode(grammarAccess.getIfExpAccess().getLeftCurlyBracketKeyword_5(), null); 
                
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:671:1: ( (lv_thenExpression_6_0= ruleOCLExpression ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:672:1: (lv_thenExpression_6_0= ruleOCLExpression )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:672:1: (lv_thenExpression_6_0= ruleOCLExpression )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:673:3: lv_thenExpression_6_0= ruleOCLExpression
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getIfExpAccess().getThenExpressionOCLExpressionParserRuleCall_6_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleOCLExpression_in_ruleIfExp1161);
            lv_thenExpression_6_0=ruleOCLExpression();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getIfExpRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"thenExpression",
            	        		lv_thenExpression_6_0, 
            	        		"OCLExpression", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }

            match(input,21,FOLLOW_21_in_ruleIfExp1171); 

                    createLeafNode(grammarAccess.getIfExpAccess().getRightCurlyBracketKeyword_7(), null); 
                
            match(input,24,FOLLOW_24_in_ruleIfExp1181); 

                    createLeafNode(grammarAccess.getIfExpAccess().getElseKeyword_8(), null); 
                
            match(input,20,FOLLOW_20_in_ruleIfExp1191); 

                    createLeafNode(grammarAccess.getIfExpAccess().getLeftCurlyBracketKeyword_9(), null); 
                
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:707:1: ( (lv_elseExpression_10_0= ruleOCLExpression ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:708:1: (lv_elseExpression_10_0= ruleOCLExpression )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:708:1: (lv_elseExpression_10_0= ruleOCLExpression )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:709:3: lv_elseExpression_10_0= ruleOCLExpression
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getIfExpAccess().getElseExpressionOCLExpressionParserRuleCall_10_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleOCLExpression_in_ruleIfExp1212);
            lv_elseExpression_10_0=ruleOCLExpression();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getIfExpRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"elseExpression",
            	        		lv_elseExpression_10_0, 
            	        		"OCLExpression", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }

            match(input,21,FOLLOW_21_in_ruleIfExp1222); 

                    createLeafNode(grammarAccess.getIfExpAccess().getRightCurlyBracketKeyword_11(), null); 
                

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleIfExp


    // $ANTLR start entryRuleAssignExp
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:743:1: entryRuleAssignExp returns [EObject current=null] : iv_ruleAssignExp= ruleAssignExp EOF ;
    public final EObject entryRuleAssignExp() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAssignExp = null;


        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:744:2: (iv_ruleAssignExp= ruleAssignExp EOF )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:745:2: iv_ruleAssignExp= ruleAssignExp EOF
            {
             currentNode = createCompositeNode(grammarAccess.getAssignExpRule(), currentNode); 
            pushFollow(FOLLOW_ruleAssignExp_in_entryRuleAssignExp1258);
            iv_ruleAssignExp=ruleAssignExp();
            _fsp--;

             current =iv_ruleAssignExp; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAssignExp1268); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleAssignExp


    // $ANTLR start ruleAssignExp
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:752:1: ruleAssignExp returns [EObject current=null] : ( ( (lv_left_0_0= ruleVariable ) ) ':=' ( (lv_value_2_0= ruleOCLExpression ) ) ) ;
    public final EObject ruleAssignExp() throws RecognitionException {
        EObject current = null;

        EObject lv_left_0_0 = null;

        EObject lv_value_2_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:757:6: ( ( ( (lv_left_0_0= ruleVariable ) ) ':=' ( (lv_value_2_0= ruleOCLExpression ) ) ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:758:1: ( ( (lv_left_0_0= ruleVariable ) ) ':=' ( (lv_value_2_0= ruleOCLExpression ) ) )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:758:1: ( ( (lv_left_0_0= ruleVariable ) ) ':=' ( (lv_value_2_0= ruleOCLExpression ) ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:758:2: ( (lv_left_0_0= ruleVariable ) ) ':=' ( (lv_value_2_0= ruleOCLExpression ) )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:758:2: ( (lv_left_0_0= ruleVariable ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:759:1: (lv_left_0_0= ruleVariable )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:759:1: (lv_left_0_0= ruleVariable )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:760:3: lv_left_0_0= ruleVariable
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getAssignExpAccess().getLeftVariableParserRuleCall_0_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleVariable_in_ruleAssignExp1314);
            lv_left_0_0=ruleVariable();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getAssignExpRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"left",
            	        		lv_left_0_0, 
            	        		"Variable", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }

            match(input,25,FOLLOW_25_in_ruleAssignExp1324); 

                    createLeafNode(grammarAccess.getAssignExpAccess().getColonEqualsSignKeyword_1(), null); 
                
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:786:1: ( (lv_value_2_0= ruleOCLExpression ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:787:1: (lv_value_2_0= ruleOCLExpression )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:787:1: (lv_value_2_0= ruleOCLExpression )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:788:3: lv_value_2_0= ruleOCLExpression
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getAssignExpAccess().getValueOCLExpressionParserRuleCall_2_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleOCLExpression_in_ruleAssignExp1345);
            lv_value_2_0=ruleOCLExpression();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getAssignExpRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"value",
            	        		lv_value_2_0, 
            	        		"OCLExpression", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleAssignExp


    // $ANTLR start entryRuleImperativeExpression
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:818:1: entryRuleImperativeExpression returns [EObject current=null] : iv_ruleImperativeExpression= ruleImperativeExpression EOF ;
    public final EObject entryRuleImperativeExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleImperativeExpression = null;


        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:819:2: (iv_ruleImperativeExpression= ruleImperativeExpression EOF )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:820:2: iv_ruleImperativeExpression= ruleImperativeExpression EOF
            {
             currentNode = createCompositeNode(grammarAccess.getImperativeExpressionRule(), currentNode); 
            pushFollow(FOLLOW_ruleImperativeExpression_in_entryRuleImperativeExpression1381);
            iv_ruleImperativeExpression=ruleImperativeExpression();
            _fsp--;

             current =iv_ruleImperativeExpression; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleImperativeExpression1391); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleImperativeExpression


    // $ANTLR start ruleImperativeExpression
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:827:1: ruleImperativeExpression returns [EObject current=null] : (this_BreakExp_0= ruleBreakExp | this_ContinueExp_1= ruleContinueExp | this_WhileExp_2= ruleWhileExp | this_VariableInitExp_3= ruleVariableInitExp | this_Variable_4= ruleVariable | this_IfExp_5= ruleIfExp | this_AssignExp_6= ruleAssignExp | this_NullExp_7= ruleNullExp ) ;
    public final EObject ruleImperativeExpression() throws RecognitionException {
        EObject current = null;

        EObject this_BreakExp_0 = null;

        EObject this_ContinueExp_1 = null;

        EObject this_WhileExp_2 = null;

        EObject this_VariableInitExp_3 = null;

        EObject this_Variable_4 = null;

        EObject this_IfExp_5 = null;

        EObject this_AssignExp_6 = null;

        EObject this_NullExp_7 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:832:6: ( (this_BreakExp_0= ruleBreakExp | this_ContinueExp_1= ruleContinueExp | this_WhileExp_2= ruleWhileExp | this_VariableInitExp_3= ruleVariableInitExp | this_Variable_4= ruleVariable | this_IfExp_5= ruleIfExp | this_AssignExp_6= ruleAssignExp | this_NullExp_7= ruleNullExp ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:833:1: (this_BreakExp_0= ruleBreakExp | this_ContinueExp_1= ruleContinueExp | this_WhileExp_2= ruleWhileExp | this_VariableInitExp_3= ruleVariableInitExp | this_Variable_4= ruleVariable | this_IfExp_5= ruleIfExp | this_AssignExp_6= ruleAssignExp | this_NullExp_7= ruleNullExp )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:833:1: (this_BreakExp_0= ruleBreakExp | this_ContinueExp_1= ruleContinueExp | this_WhileExp_2= ruleWhileExp | this_VariableInitExp_3= ruleVariableInitExp | this_Variable_4= ruleVariable | this_IfExp_5= ruleIfExp | this_AssignExp_6= ruleAssignExp | this_NullExp_7= ruleNullExp )
            int alt6=8;
            switch ( input.LA(1) ) {
            case 27:
                {
                alt6=1;
                }
                break;
            case 28:
                {
                alt6=2;
                }
                break;
            case 29:
                {
                alt6=3;
                }
                break;
            case 30:
                {
                alt6=4;
                }
                break;
            case RULE_ID:
                {
                int LA6_5 = input.LA(2);

                if ( (LA6_5==EOF||(LA6_5>=14 && LA6_5<=15)||LA6_5==21||(LA6_5>=39 && LA6_5<=49)) ) {
                    alt6=5;
                }
                else if ( (LA6_5==25) ) {
                    alt6=7;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("833:1: (this_BreakExp_0= ruleBreakExp | this_ContinueExp_1= ruleContinueExp | this_WhileExp_2= ruleWhileExp | this_VariableInitExp_3= ruleVariableInitExp | this_Variable_4= ruleVariable | this_IfExp_5= ruleIfExp | this_AssignExp_6= ruleAssignExp | this_NullExp_7= ruleNullExp )", 6, 5, input);

                    throw nvae;
                }
                }
                break;
            case 22:
                {
                alt6=6;
                }
                break;
            case 26:
                {
                alt6=8;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("833:1: (this_BreakExp_0= ruleBreakExp | this_ContinueExp_1= ruleContinueExp | this_WhileExp_2= ruleWhileExp | this_VariableInitExp_3= ruleVariableInitExp | this_Variable_4= ruleVariable | this_IfExp_5= ruleIfExp | this_AssignExp_6= ruleAssignExp | this_NullExp_7= ruleNullExp )", 6, 0, input);

                throw nvae;
            }

            switch (alt6) {
                case 1 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:834:5: this_BreakExp_0= ruleBreakExp
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getImperativeExpressionAccess().getBreakExpParserRuleCall_0(), currentNode); 
                        
                    pushFollow(FOLLOW_ruleBreakExp_in_ruleImperativeExpression1438);
                    this_BreakExp_0=ruleBreakExp();
                    _fsp--;

                     
                            current = this_BreakExp_0; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;
                case 2 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:844:5: this_ContinueExp_1= ruleContinueExp
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getImperativeExpressionAccess().getContinueExpParserRuleCall_1(), currentNode); 
                        
                    pushFollow(FOLLOW_ruleContinueExp_in_ruleImperativeExpression1465);
                    this_ContinueExp_1=ruleContinueExp();
                    _fsp--;

                     
                            current = this_ContinueExp_1; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;
                case 3 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:854:5: this_WhileExp_2= ruleWhileExp
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getImperativeExpressionAccess().getWhileExpParserRuleCall_2(), currentNode); 
                        
                    pushFollow(FOLLOW_ruleWhileExp_in_ruleImperativeExpression1492);
                    this_WhileExp_2=ruleWhileExp();
                    _fsp--;

                     
                            current = this_WhileExp_2; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;
                case 4 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:864:5: this_VariableInitExp_3= ruleVariableInitExp
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getImperativeExpressionAccess().getVariableInitExpParserRuleCall_3(), currentNode); 
                        
                    pushFollow(FOLLOW_ruleVariableInitExp_in_ruleImperativeExpression1519);
                    this_VariableInitExp_3=ruleVariableInitExp();
                    _fsp--;

                     
                            current = this_VariableInitExp_3; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;
                case 5 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:874:5: this_Variable_4= ruleVariable
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getImperativeExpressionAccess().getVariableParserRuleCall_4(), currentNode); 
                        
                    pushFollow(FOLLOW_ruleVariable_in_ruleImperativeExpression1546);
                    this_Variable_4=ruleVariable();
                    _fsp--;

                     
                            current = this_Variable_4; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;
                case 6 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:884:5: this_IfExp_5= ruleIfExp
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getImperativeExpressionAccess().getIfExpParserRuleCall_5(), currentNode); 
                        
                    pushFollow(FOLLOW_ruleIfExp_in_ruleImperativeExpression1573);
                    this_IfExp_5=ruleIfExp();
                    _fsp--;

                     
                            current = this_IfExp_5; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;
                case 7 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:894:5: this_AssignExp_6= ruleAssignExp
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getImperativeExpressionAccess().getAssignExpParserRuleCall_6(), currentNode); 
                        
                    pushFollow(FOLLOW_ruleAssignExp_in_ruleImperativeExpression1600);
                    this_AssignExp_6=ruleAssignExp();
                    _fsp--;

                     
                            current = this_AssignExp_6; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;
                case 8 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:904:5: this_NullExp_7= ruleNullExp
                    {
                     
                            currentNode=createCompositeNode(grammarAccess.getImperativeExpressionAccess().getNullExpParserRuleCall_7(), currentNode); 
                        
                    pushFollow(FOLLOW_ruleNullExp_in_ruleImperativeExpression1627);
                    this_NullExp_7=ruleNullExp();
                    _fsp--;

                     
                            current = this_NullExp_7; 
                            currentNode = currentNode.getParent();
                        

                    }
                    break;

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleImperativeExpression


    // $ANTLR start entryRuleSeqExp
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:920:1: entryRuleSeqExp returns [EObject current=null] : iv_ruleSeqExp= ruleSeqExp EOF ;
    public final EObject entryRuleSeqExp() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSeqExp = null;


        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:921:2: (iv_ruleSeqExp= ruleSeqExp EOF )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:922:2: iv_ruleSeqExp= ruleSeqExp EOF
            {
             currentNode = createCompositeNode(grammarAccess.getSeqExpRule(), currentNode); 
            pushFollow(FOLLOW_ruleSeqExp_in_entryRuleSeqExp1662);
            iv_ruleSeqExp=ruleSeqExp();
            _fsp--;

             current =iv_ruleSeqExp; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleSeqExp1672); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleSeqExp


    // $ANTLR start ruleSeqExp
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:929:1: ruleSeqExp returns [EObject current=null] : ( ( (lv_e1_0_0= ruleImperativeExpression ) ) ( ';' ( (lv_e1_2_0= ruleImperativeExpression ) ) )* ) ;
    public final EObject ruleSeqExp() throws RecognitionException {
        EObject current = null;

        EObject lv_e1_0_0 = null;

        EObject lv_e1_2_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:934:6: ( ( ( (lv_e1_0_0= ruleImperativeExpression ) ) ( ';' ( (lv_e1_2_0= ruleImperativeExpression ) ) )* ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:935:1: ( ( (lv_e1_0_0= ruleImperativeExpression ) ) ( ';' ( (lv_e1_2_0= ruleImperativeExpression ) ) )* )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:935:1: ( ( (lv_e1_0_0= ruleImperativeExpression ) ) ( ';' ( (lv_e1_2_0= ruleImperativeExpression ) ) )* )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:935:2: ( (lv_e1_0_0= ruleImperativeExpression ) ) ( ';' ( (lv_e1_2_0= ruleImperativeExpression ) ) )*
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:935:2: ( (lv_e1_0_0= ruleImperativeExpression ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:936:1: (lv_e1_0_0= ruleImperativeExpression )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:936:1: (lv_e1_0_0= ruleImperativeExpression )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:937:3: lv_e1_0_0= ruleImperativeExpression
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getSeqExpAccess().getE1ImperativeExpressionParserRuleCall_0_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleImperativeExpression_in_ruleSeqExp1718);
            lv_e1_0_0=ruleImperativeExpression();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getSeqExpRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		add(
            	       			current, 
            	       			"e1",
            	        		lv_e1_0_0, 
            	        		"ImperativeExpression", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }

            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:959:2: ( ';' ( (lv_e1_2_0= ruleImperativeExpression ) ) )*
            loop7:
            do {
                int alt7=2;
                int LA7_0 = input.LA(1);

                if ( (LA7_0==15) ) {
                    alt7=1;
                }


                switch (alt7) {
            	case 1 :
            	    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:959:4: ';' ( (lv_e1_2_0= ruleImperativeExpression ) )
            	    {
            	    match(input,15,FOLLOW_15_in_ruleSeqExp1729); 

            	            createLeafNode(grammarAccess.getSeqExpAccess().getSemicolonKeyword_1_0(), null); 
            	        
            	    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:963:1: ( (lv_e1_2_0= ruleImperativeExpression ) )
            	    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:964:1: (lv_e1_2_0= ruleImperativeExpression )
            	    {
            	    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:964:1: (lv_e1_2_0= ruleImperativeExpression )
            	    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:965:3: lv_e1_2_0= ruleImperativeExpression
            	    {
            	     
            	    	        currentNode=createCompositeNode(grammarAccess.getSeqExpAccess().getE1ImperativeExpressionParserRuleCall_1_1_0(), currentNode); 
            	    	    
            	    pushFollow(FOLLOW_ruleImperativeExpression_in_ruleSeqExp1750);
            	    lv_e1_2_0=ruleImperativeExpression();
            	    _fsp--;


            	    	        if (current==null) {
            	    	            current = factory.create(grammarAccess.getSeqExpRule().getType().getClassifier());
            	    	            associateNodeWithAstElement(currentNode.getParent(), current);
            	    	        }
            	    	        try {
            	    	       		add(
            	    	       			current, 
            	    	       			"e1",
            	    	        		lv_e1_2_0, 
            	    	        		"ImperativeExpression", 
            	    	        		currentNode);
            	    	        } catch (ValueConverterException vce) {
            	    				handleValueConverterException(vce);
            	    	        }
            	    	        currentNode = currentNode.getParent();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop7;
                }
            } while (true);


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleSeqExp


    // $ANTLR start entryRuleNullExp
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:997:1: entryRuleNullExp returns [EObject current=null] : iv_ruleNullExp= ruleNullExp EOF ;
    public final EObject entryRuleNullExp() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNullExp = null;


        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:998:2: (iv_ruleNullExp= ruleNullExp EOF )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:999:2: iv_ruleNullExp= ruleNullExp EOF
            {
             currentNode = createCompositeNode(grammarAccess.getNullExpRule(), currentNode); 
            pushFollow(FOLLOW_ruleNullExp_in_entryRuleNullExp1790);
            iv_ruleNullExp=ruleNullExp();
            _fsp--;

             current =iv_ruleNullExp; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleNullExp1800); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleNullExp


    // $ANTLR start ruleNullExp
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1006:1: ruleNullExp returns [EObject current=null] : ( (lv_null_0_0= 'null' ) ) ;
    public final EObject ruleNullExp() throws RecognitionException {
        EObject current = null;

        Token lv_null_0_0=null;

         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1011:6: ( ( (lv_null_0_0= 'null' ) ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1012:1: ( (lv_null_0_0= 'null' ) )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1012:1: ( (lv_null_0_0= 'null' ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1013:1: (lv_null_0_0= 'null' )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1013:1: (lv_null_0_0= 'null' )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1014:3: lv_null_0_0= 'null'
            {
            lv_null_0_0=(Token)input.LT(1);
            match(input,26,FOLLOW_26_in_ruleNullExp1842); 

                    createLeafNode(grammarAccess.getNullExpAccess().getNullNullKeyword_0(), "null"); 
                

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getNullExpRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "null", lv_null_0_0, "null", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleNullExp


    // $ANTLR start entryRuleBreakExp
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1041:1: entryRuleBreakExp returns [EObject current=null] : iv_ruleBreakExp= ruleBreakExp EOF ;
    public final EObject entryRuleBreakExp() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBreakExp = null;


        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1042:2: (iv_ruleBreakExp= ruleBreakExp EOF )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1043:2: iv_ruleBreakExp= ruleBreakExp EOF
            {
             currentNode = createCompositeNode(grammarAccess.getBreakExpRule(), currentNode); 
            pushFollow(FOLLOW_ruleBreakExp_in_entryRuleBreakExp1890);
            iv_ruleBreakExp=ruleBreakExp();
            _fsp--;

             current =iv_ruleBreakExp; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleBreakExp1900); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleBreakExp


    // $ANTLR start ruleBreakExp
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1050:1: ruleBreakExp returns [EObject current=null] : ( (lv_break_0_0= 'break' ) ) ;
    public final EObject ruleBreakExp() throws RecognitionException {
        EObject current = null;

        Token lv_break_0_0=null;

         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1055:6: ( ( (lv_break_0_0= 'break' ) ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1056:1: ( (lv_break_0_0= 'break' ) )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1056:1: ( (lv_break_0_0= 'break' ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1057:1: (lv_break_0_0= 'break' )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1057:1: (lv_break_0_0= 'break' )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1058:3: lv_break_0_0= 'break'
            {
            lv_break_0_0=(Token)input.LT(1);
            match(input,27,FOLLOW_27_in_ruleBreakExp1942); 

                    createLeafNode(grammarAccess.getBreakExpAccess().getBreakBreakKeyword_0(), "break"); 
                

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getBreakExpRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "break", lv_break_0_0, "break", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleBreakExp


    // $ANTLR start entryRuleContinueExp
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1085:1: entryRuleContinueExp returns [EObject current=null] : iv_ruleContinueExp= ruleContinueExp EOF ;
    public final EObject entryRuleContinueExp() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleContinueExp = null;


        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1086:2: (iv_ruleContinueExp= ruleContinueExp EOF )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1087:2: iv_ruleContinueExp= ruleContinueExp EOF
            {
             currentNode = createCompositeNode(grammarAccess.getContinueExpRule(), currentNode); 
            pushFollow(FOLLOW_ruleContinueExp_in_entryRuleContinueExp1990);
            iv_ruleContinueExp=ruleContinueExp();
            _fsp--;

             current =iv_ruleContinueExp; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleContinueExp2000); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleContinueExp


    // $ANTLR start ruleContinueExp
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1094:1: ruleContinueExp returns [EObject current=null] : ( (lv_continue_0_0= 'continue' ) ) ;
    public final EObject ruleContinueExp() throws RecognitionException {
        EObject current = null;

        Token lv_continue_0_0=null;

         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1099:6: ( ( (lv_continue_0_0= 'continue' ) ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1100:1: ( (lv_continue_0_0= 'continue' ) )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1100:1: ( (lv_continue_0_0= 'continue' ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1101:1: (lv_continue_0_0= 'continue' )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1101:1: (lv_continue_0_0= 'continue' )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1102:3: lv_continue_0_0= 'continue'
            {
            lv_continue_0_0=(Token)input.LT(1);
            match(input,28,FOLLOW_28_in_ruleContinueExp2042); 

                    createLeafNode(grammarAccess.getContinueExpAccess().getContinueContinueKeyword_0(), "continue"); 
                

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getContinueExpRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        
            	        try {
            	       		set(current, "continue", lv_continue_0_0, "continue", lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleContinueExp


    // $ANTLR start entryRuleWhileExp
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1129:1: entryRuleWhileExp returns [EObject current=null] : iv_ruleWhileExp= ruleWhileExp EOF ;
    public final EObject entryRuleWhileExp() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleWhileExp = null;


        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1130:2: (iv_ruleWhileExp= ruleWhileExp EOF )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1131:2: iv_ruleWhileExp= ruleWhileExp EOF
            {
             currentNode = createCompositeNode(grammarAccess.getWhileExpRule(), currentNode); 
            pushFollow(FOLLOW_ruleWhileExp_in_entryRuleWhileExp2090);
            iv_ruleWhileExp=ruleWhileExp();
            _fsp--;

             current =iv_ruleWhileExp; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleWhileExp2100); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleWhileExp


    // $ANTLR start ruleWhileExp
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1138:1: ruleWhileExp returns [EObject current=null] : ( 'while' '(' ( (lv_condition_2_0= ruleOCLExpression ) ) ')' '{' ( (lv_body_5_0= ruleSeqExp ) ) '}' ) ;
    public final EObject ruleWhileExp() throws RecognitionException {
        EObject current = null;

        EObject lv_condition_2_0 = null;

        EObject lv_body_5_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1143:6: ( ( 'while' '(' ( (lv_condition_2_0= ruleOCLExpression ) ) ')' '{' ( (lv_body_5_0= ruleSeqExp ) ) '}' ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1144:1: ( 'while' '(' ( (lv_condition_2_0= ruleOCLExpression ) ) ')' '{' ( (lv_body_5_0= ruleSeqExp ) ) '}' )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1144:1: ( 'while' '(' ( (lv_condition_2_0= ruleOCLExpression ) ) ')' '{' ( (lv_body_5_0= ruleSeqExp ) ) '}' )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1144:3: 'while' '(' ( (lv_condition_2_0= ruleOCLExpression ) ) ')' '{' ( (lv_body_5_0= ruleSeqExp ) ) '}'
            {
            match(input,29,FOLLOW_29_in_ruleWhileExp2135); 

                    createLeafNode(grammarAccess.getWhileExpAccess().getWhileKeyword_0(), null); 
                
            match(input,12,FOLLOW_12_in_ruleWhileExp2145); 

                    createLeafNode(grammarAccess.getWhileExpAccess().getLeftParenthesisKeyword_1(), null); 
                
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1152:1: ( (lv_condition_2_0= ruleOCLExpression ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1153:1: (lv_condition_2_0= ruleOCLExpression )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1153:1: (lv_condition_2_0= ruleOCLExpression )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1154:3: lv_condition_2_0= ruleOCLExpression
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getWhileExpAccess().getConditionOCLExpressionParserRuleCall_2_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleOCLExpression_in_ruleWhileExp2166);
            lv_condition_2_0=ruleOCLExpression();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getWhileExpRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"condition",
            	        		lv_condition_2_0, 
            	        		"OCLExpression", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }

            match(input,14,FOLLOW_14_in_ruleWhileExp2176); 

                    createLeafNode(grammarAccess.getWhileExpAccess().getRightParenthesisKeyword_3(), null); 
                
            match(input,20,FOLLOW_20_in_ruleWhileExp2186); 

                    createLeafNode(grammarAccess.getWhileExpAccess().getLeftCurlyBracketKeyword_4(), null); 
                
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1184:1: ( (lv_body_5_0= ruleSeqExp ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1185:1: (lv_body_5_0= ruleSeqExp )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1185:1: (lv_body_5_0= ruleSeqExp )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1186:3: lv_body_5_0= ruleSeqExp
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getWhileExpAccess().getBodySeqExpParserRuleCall_5_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleSeqExp_in_ruleWhileExp2207);
            lv_body_5_0=ruleSeqExp();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getWhileExpRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"body",
            	        		lv_body_5_0, 
            	        		"SeqExp", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }

            match(input,21,FOLLOW_21_in_ruleWhileExp2217); 

                    createLeafNode(grammarAccess.getWhileExpAccess().getRightCurlyBracketKeyword_6(), null); 
                

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleWhileExp


    // $ANTLR start entryRuleBooleanLiteralExp
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1220:1: entryRuleBooleanLiteralExp returns [EObject current=null] : iv_ruleBooleanLiteralExp= ruleBooleanLiteralExp EOF ;
    public final EObject entryRuleBooleanLiteralExp() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBooleanLiteralExp = null;


        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1221:2: (iv_ruleBooleanLiteralExp= ruleBooleanLiteralExp EOF )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1222:2: iv_ruleBooleanLiteralExp= ruleBooleanLiteralExp EOF
            {
             currentNode = createCompositeNode(grammarAccess.getBooleanLiteralExpRule(), currentNode); 
            pushFollow(FOLLOW_ruleBooleanLiteralExp_in_entryRuleBooleanLiteralExp2253);
            iv_ruleBooleanLiteralExp=ruleBooleanLiteralExp();
            _fsp--;

             current =iv_ruleBooleanLiteralExp; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleBooleanLiteralExp2263); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleBooleanLiteralExp


    // $ANTLR start ruleBooleanLiteralExp
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1229:1: ruleBooleanLiteralExp returns [EObject current=null] : ( (lv_booleanSymbol_0_0= ruleBool ) ) ;
    public final EObject ruleBooleanLiteralExp() throws RecognitionException {
        EObject current = null;

        Enumerator lv_booleanSymbol_0_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1234:6: ( ( (lv_booleanSymbol_0_0= ruleBool ) ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1235:1: ( (lv_booleanSymbol_0_0= ruleBool ) )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1235:1: ( (lv_booleanSymbol_0_0= ruleBool ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1236:1: (lv_booleanSymbol_0_0= ruleBool )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1236:1: (lv_booleanSymbol_0_0= ruleBool )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1237:3: lv_booleanSymbol_0_0= ruleBool
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getBooleanLiteralExpAccess().getBooleanSymbolBoolEnumRuleCall_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleBool_in_ruleBooleanLiteralExp2308);
            lv_booleanSymbol_0_0=ruleBool();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getBooleanLiteralExpRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"booleanSymbol",
            	        		lv_booleanSymbol_0_0, 
            	        		"Bool", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleBooleanLiteralExp


    // $ANTLR start entryRuleVariableInitExp
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1267:1: entryRuleVariableInitExp returns [EObject current=null] : iv_ruleVariableInitExp= ruleVariableInitExp EOF ;
    public final EObject entryRuleVariableInitExp() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleVariableInitExp = null;


        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1268:2: (iv_ruleVariableInitExp= ruleVariableInitExp EOF )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1269:2: iv_ruleVariableInitExp= ruleVariableInitExp EOF
            {
             currentNode = createCompositeNode(grammarAccess.getVariableInitExpRule(), currentNode); 
            pushFollow(FOLLOW_ruleVariableInitExp_in_entryRuleVariableInitExp2343);
            iv_ruleVariableInitExp=ruleVariableInitExp();
            _fsp--;

             current =iv_ruleVariableInitExp; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleVariableInitExp2353); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleVariableInitExp


    // $ANTLR start ruleVariableInitExp
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1276:1: ruleVariableInitExp returns [EObject current=null] : ( 'var' ( (lv_referredVariable_1_0= ruleVariableWithType ) ) ) ;
    public final EObject ruleVariableInitExp() throws RecognitionException {
        EObject current = null;

        EObject lv_referredVariable_1_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1281:6: ( ( 'var' ( (lv_referredVariable_1_0= ruleVariableWithType ) ) ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1282:1: ( 'var' ( (lv_referredVariable_1_0= ruleVariableWithType ) ) )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1282:1: ( 'var' ( (lv_referredVariable_1_0= ruleVariableWithType ) ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1282:3: 'var' ( (lv_referredVariable_1_0= ruleVariableWithType ) )
            {
            match(input,30,FOLLOW_30_in_ruleVariableInitExp2388); 

                    createLeafNode(grammarAccess.getVariableInitExpAccess().getVarKeyword_0(), null); 
                
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1286:1: ( (lv_referredVariable_1_0= ruleVariableWithType ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1287:1: (lv_referredVariable_1_0= ruleVariableWithType )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1287:1: (lv_referredVariable_1_0= ruleVariableWithType )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1288:3: lv_referredVariable_1_0= ruleVariableWithType
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getVariableInitExpAccess().getReferredVariableVariableWithTypeParserRuleCall_1_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleVariableWithType_in_ruleVariableInitExp2409);
            lv_referredVariable_1_0=ruleVariableWithType();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getVariableInitExpRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"referredVariable",
            	        		lv_referredVariable_1_0, 
            	        		"VariableWithType", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleVariableInitExp


    // $ANTLR start entryRuleVariableWithType
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1318:1: entryRuleVariableWithType returns [EObject current=null] : iv_ruleVariableWithType= ruleVariableWithType EOF ;
    public final EObject entryRuleVariableWithType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleVariableWithType = null;


        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1319:2: (iv_ruleVariableWithType= ruleVariableWithType EOF )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1320:2: iv_ruleVariableWithType= ruleVariableWithType EOF
            {
             currentNode = createCompositeNode(grammarAccess.getVariableWithTypeRule(), currentNode); 
            pushFollow(FOLLOW_ruleVariableWithType_in_entryRuleVariableWithType2445);
            iv_ruleVariableWithType=ruleVariableWithType();
            _fsp--;

             current =iv_ruleVariableWithType; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleVariableWithType2455); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleVariableWithType


    // $ANTLR start ruleVariableWithType
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1327:1: ruleVariableWithType returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) ':' ( (lv_type_2_0= ruleDataType ) ) ( ':=' ( (lv_value_4_0= ruleOCLExpression ) ) )? ) ;
    public final EObject ruleVariableWithType() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        EObject lv_type_2_0 = null;

        EObject lv_value_4_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1332:6: ( ( ( (lv_name_0_0= RULE_ID ) ) ':' ( (lv_type_2_0= ruleDataType ) ) ( ':=' ( (lv_value_4_0= ruleOCLExpression ) ) )? ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1333:1: ( ( (lv_name_0_0= RULE_ID ) ) ':' ( (lv_type_2_0= ruleDataType ) ) ( ':=' ( (lv_value_4_0= ruleOCLExpression ) ) )? )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1333:1: ( ( (lv_name_0_0= RULE_ID ) ) ':' ( (lv_type_2_0= ruleDataType ) ) ( ':=' ( (lv_value_4_0= ruleOCLExpression ) ) )? )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1333:2: ( (lv_name_0_0= RULE_ID ) ) ':' ( (lv_type_2_0= ruleDataType ) ) ( ':=' ( (lv_value_4_0= ruleOCLExpression ) ) )?
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1333:2: ( (lv_name_0_0= RULE_ID ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1334:1: (lv_name_0_0= RULE_ID )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1334:1: (lv_name_0_0= RULE_ID )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1335:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)input.LT(1);
            match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleVariableWithType2497); 

            			createLeafNode(grammarAccess.getVariableWithTypeAccess().getNameIDTerminalRuleCall_0_0(), "name"); 
            		

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getVariableWithTypeRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"name",
            	        		lv_name_0_0, 
            	        		"ID", 
            	        		lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }


            }

            match(input,16,FOLLOW_16_in_ruleVariableWithType2512); 

                    createLeafNode(grammarAccess.getVariableWithTypeAccess().getColonKeyword_1(), null); 
                
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1361:1: ( (lv_type_2_0= ruleDataType ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1362:1: (lv_type_2_0= ruleDataType )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1362:1: (lv_type_2_0= ruleDataType )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1363:3: lv_type_2_0= ruleDataType
            {
             
            	        currentNode=createCompositeNode(grammarAccess.getVariableWithTypeAccess().getTypeDataTypeParserRuleCall_2_0(), currentNode); 
            	    
            pushFollow(FOLLOW_ruleDataType_in_ruleVariableWithType2533);
            lv_type_2_0=ruleDataType();
            _fsp--;


            	        if (current==null) {
            	            current = factory.create(grammarAccess.getVariableWithTypeRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode.getParent(), current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"type",
            	        		lv_type_2_0, 
            	        		"DataType", 
            	        		currentNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	        currentNode = currentNode.getParent();
            	    

            }


            }

            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1385:2: ( ':=' ( (lv_value_4_0= ruleOCLExpression ) ) )?
            int alt8=2;
            int LA8_0 = input.LA(1);

            if ( (LA8_0==25) ) {
                alt8=1;
            }
            switch (alt8) {
                case 1 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1385:4: ':=' ( (lv_value_4_0= ruleOCLExpression ) )
                    {
                    match(input,25,FOLLOW_25_in_ruleVariableWithType2544); 

                            createLeafNode(grammarAccess.getVariableWithTypeAccess().getColonEqualsSignKeyword_3_0(), null); 
                        
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1389:1: ( (lv_value_4_0= ruleOCLExpression ) )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1390:1: (lv_value_4_0= ruleOCLExpression )
                    {
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1390:1: (lv_value_4_0= ruleOCLExpression )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1391:3: lv_value_4_0= ruleOCLExpression
                    {
                     
                    	        currentNode=createCompositeNode(grammarAccess.getVariableWithTypeAccess().getValueOCLExpressionParserRuleCall_3_1_0(), currentNode); 
                    	    
                    pushFollow(FOLLOW_ruleOCLExpression_in_ruleVariableWithType2565);
                    lv_value_4_0=ruleOCLExpression();
                    _fsp--;


                    	        if (current==null) {
                    	            current = factory.create(grammarAccess.getVariableWithTypeRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode.getParent(), current);
                    	        }
                    	        try {
                    	       		set(
                    	       			current, 
                    	       			"value",
                    	        		lv_value_4_0, 
                    	        		"OCLExpression", 
                    	        		currentNode);
                    	        } catch (ValueConverterException vce) {
                    				handleValueConverterException(vce);
                    	        }
                    	        currentNode = currentNode.getParent();
                    	    

                    }


                    }


                    }
                    break;

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleVariableWithType


    // $ANTLR start entryRuleDataType
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1421:1: entryRuleDataType returns [EObject current=null] : iv_ruleDataType= ruleDataType EOF ;
    public final EObject entryRuleDataType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDataType = null;


        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1422:2: (iv_ruleDataType= ruleDataType EOF )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1423:2: iv_ruleDataType= ruleDataType EOF
            {
             currentNode = createCompositeNode(grammarAccess.getDataTypeRule(), currentNode); 
            pushFollow(FOLLOW_ruleDataType_in_entryRuleDataType2603);
            iv_ruleDataType=ruleDataType();
            _fsp--;

             current =iv_ruleDataType; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDataType2613); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleDataType


    // $ANTLR start ruleDataType
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1430:1: ruleDataType returns [EObject current=null] : ( ( (lv_String_0_0= 'string' ) ) | ( (lv_Integer_1_0= 'integer' ) ) | ( (lv_Boolean_2_0= 'boolean' ) ) ) ;
    public final EObject ruleDataType() throws RecognitionException {
        EObject current = null;

        Token lv_String_0_0=null;
        Token lv_Integer_1_0=null;
        Token lv_Boolean_2_0=null;

         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1435:6: ( ( ( (lv_String_0_0= 'string' ) ) | ( (lv_Integer_1_0= 'integer' ) ) | ( (lv_Boolean_2_0= 'boolean' ) ) ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1436:1: ( ( (lv_String_0_0= 'string' ) ) | ( (lv_Integer_1_0= 'integer' ) ) | ( (lv_Boolean_2_0= 'boolean' ) ) )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1436:1: ( ( (lv_String_0_0= 'string' ) ) | ( (lv_Integer_1_0= 'integer' ) ) | ( (lv_Boolean_2_0= 'boolean' ) ) )
            int alt9=3;
            switch ( input.LA(1) ) {
            case 31:
                {
                alt9=1;
                }
                break;
            case 32:
                {
                alt9=2;
                }
                break;
            case 33:
                {
                alt9=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("1436:1: ( ( (lv_String_0_0= 'string' ) ) | ( (lv_Integer_1_0= 'integer' ) ) | ( (lv_Boolean_2_0= 'boolean' ) ) )", 9, 0, input);

                throw nvae;
            }

            switch (alt9) {
                case 1 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1436:2: ( (lv_String_0_0= 'string' ) )
                    {
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1436:2: ( (lv_String_0_0= 'string' ) )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1437:1: (lv_String_0_0= 'string' )
                    {
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1437:1: (lv_String_0_0= 'string' )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1438:3: lv_String_0_0= 'string'
                    {
                    lv_String_0_0=(Token)input.LT(1);
                    match(input,31,FOLLOW_31_in_ruleDataType2656); 

                            createLeafNode(grammarAccess.getDataTypeAccess().getStringStringKeyword_0_0(), "String"); 
                        

                    	        if (current==null) {
                    	            current = factory.create(grammarAccess.getDataTypeRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode, current);
                    	        }
                    	        
                    	        try {
                    	       		set(current, "String", lv_String_0_0, "string", lastConsumedNode);
                    	        } catch (ValueConverterException vce) {
                    				handleValueConverterException(vce);
                    	        }
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1458:6: ( (lv_Integer_1_0= 'integer' ) )
                    {
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1458:6: ( (lv_Integer_1_0= 'integer' ) )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1459:1: (lv_Integer_1_0= 'integer' )
                    {
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1459:1: (lv_Integer_1_0= 'integer' )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1460:3: lv_Integer_1_0= 'integer'
                    {
                    lv_Integer_1_0=(Token)input.LT(1);
                    match(input,32,FOLLOW_32_in_ruleDataType2693); 

                            createLeafNode(grammarAccess.getDataTypeAccess().getIntegerIntegerKeyword_1_0(), "Integer"); 
                        

                    	        if (current==null) {
                    	            current = factory.create(grammarAccess.getDataTypeRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode, current);
                    	        }
                    	        
                    	        try {
                    	       		set(current, "Integer", lv_Integer_1_0, "integer", lastConsumedNode);
                    	        } catch (ValueConverterException vce) {
                    				handleValueConverterException(vce);
                    	        }
                    	    

                    }


                    }


                    }
                    break;
                case 3 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1480:6: ( (lv_Boolean_2_0= 'boolean' ) )
                    {
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1480:6: ( (lv_Boolean_2_0= 'boolean' ) )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1481:1: (lv_Boolean_2_0= 'boolean' )
                    {
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1481:1: (lv_Boolean_2_0= 'boolean' )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1482:3: lv_Boolean_2_0= 'boolean'
                    {
                    lv_Boolean_2_0=(Token)input.LT(1);
                    match(input,33,FOLLOW_33_in_ruleDataType2730); 

                            createLeafNode(grammarAccess.getDataTypeAccess().getBooleanBooleanKeyword_2_0(), "Boolean"); 
                        

                    	        if (current==null) {
                    	            current = factory.create(grammarAccess.getDataTypeRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode, current);
                    	        }
                    	        
                    	        try {
                    	       		set(current, "Boolean", lv_Boolean_2_0, "boolean", lastConsumedNode);
                    	        } catch (ValueConverterException vce) {
                    				handleValueConverterException(vce);
                    	        }
                    	    

                    }


                    }


                    }
                    break;

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleDataType


    // $ANTLR start entryRuleVariable
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1509:1: entryRuleVariable returns [EObject current=null] : iv_ruleVariable= ruleVariable EOF ;
    public final EObject entryRuleVariable() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleVariable = null;


        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1510:2: (iv_ruleVariable= ruleVariable EOF )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1511:2: iv_ruleVariable= ruleVariable EOF
            {
             currentNode = createCompositeNode(grammarAccess.getVariableRule(), currentNode); 
            pushFollow(FOLLOW_ruleVariable_in_entryRuleVariable2779);
            iv_ruleVariable=ruleVariable();
            _fsp--;

             current =iv_ruleVariable; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleVariable2789); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleVariable


    // $ANTLR start ruleVariable
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1518:1: ruleVariable returns [EObject current=null] : ( (lv_name_0_0= RULE_ID ) ) ;
    public final EObject ruleVariable() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;

         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1523:6: ( ( (lv_name_0_0= RULE_ID ) ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1524:1: ( (lv_name_0_0= RULE_ID ) )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1524:1: ( (lv_name_0_0= RULE_ID ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1525:1: (lv_name_0_0= RULE_ID )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1525:1: (lv_name_0_0= RULE_ID )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1526:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)input.LT(1);
            match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleVariable2830); 

            			createLeafNode(grammarAccess.getVariableAccess().getNameIDTerminalRuleCall_0(), "name"); 
            		

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getVariableRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"name",
            	        		lv_name_0_0, 
            	        		"ID", 
            	        		lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleVariable


    // $ANTLR start entryRuleStringLiteralExp
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1556:1: entryRuleStringLiteralExp returns [EObject current=null] : iv_ruleStringLiteralExp= ruleStringLiteralExp EOF ;
    public final EObject entryRuleStringLiteralExp() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleStringLiteralExp = null;


        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1557:2: (iv_ruleStringLiteralExp= ruleStringLiteralExp EOF )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1558:2: iv_ruleStringLiteralExp= ruleStringLiteralExp EOF
            {
             currentNode = createCompositeNode(grammarAccess.getStringLiteralExpRule(), currentNode); 
            pushFollow(FOLLOW_ruleStringLiteralExp_in_entryRuleStringLiteralExp2870);
            iv_ruleStringLiteralExp=ruleStringLiteralExp();
            _fsp--;

             current =iv_ruleStringLiteralExp; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleStringLiteralExp2880); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleStringLiteralExp


    // $ANTLR start ruleStringLiteralExp
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1565:1: ruleStringLiteralExp returns [EObject current=null] : ( (lv_stringSymbol_0_0= RULE_STRING ) ) ;
    public final EObject ruleStringLiteralExp() throws RecognitionException {
        EObject current = null;

        Token lv_stringSymbol_0_0=null;

         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1570:6: ( ( (lv_stringSymbol_0_0= RULE_STRING ) ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1571:1: ( (lv_stringSymbol_0_0= RULE_STRING ) )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1571:1: ( (lv_stringSymbol_0_0= RULE_STRING ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1572:1: (lv_stringSymbol_0_0= RULE_STRING )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1572:1: (lv_stringSymbol_0_0= RULE_STRING )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1573:3: lv_stringSymbol_0_0= RULE_STRING
            {
            lv_stringSymbol_0_0=(Token)input.LT(1);
            match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleStringLiteralExp2921); 

            			createLeafNode(grammarAccess.getStringLiteralExpAccess().getStringSymbolSTRINGTerminalRuleCall_0(), "stringSymbol"); 
            		

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getStringLiteralExpRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"stringSymbol",
            	        		lv_stringSymbol_0_0, 
            	        		"STRING", 
            	        		lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleStringLiteralExp


    // $ANTLR start entryRuleIntegerLiteralExp
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1603:1: entryRuleIntegerLiteralExp returns [EObject current=null] : iv_ruleIntegerLiteralExp= ruleIntegerLiteralExp EOF ;
    public final EObject entryRuleIntegerLiteralExp() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleIntegerLiteralExp = null;


        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1604:2: (iv_ruleIntegerLiteralExp= ruleIntegerLiteralExp EOF )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1605:2: iv_ruleIntegerLiteralExp= ruleIntegerLiteralExp EOF
            {
             currentNode = createCompositeNode(grammarAccess.getIntegerLiteralExpRule(), currentNode); 
            pushFollow(FOLLOW_ruleIntegerLiteralExp_in_entryRuleIntegerLiteralExp2961);
            iv_ruleIntegerLiteralExp=ruleIntegerLiteralExp();
            _fsp--;

             current =iv_ruleIntegerLiteralExp; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleIntegerLiteralExp2971); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleIntegerLiteralExp


    // $ANTLR start ruleIntegerLiteralExp
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1612:1: ruleIntegerLiteralExp returns [EObject current=null] : ( (lv_integerSymbol_0_0= RULE_INT ) ) ;
    public final EObject ruleIntegerLiteralExp() throws RecognitionException {
        EObject current = null;

        Token lv_integerSymbol_0_0=null;

         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1617:6: ( ( (lv_integerSymbol_0_0= RULE_INT ) ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1618:1: ( (lv_integerSymbol_0_0= RULE_INT ) )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1618:1: ( (lv_integerSymbol_0_0= RULE_INT ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1619:1: (lv_integerSymbol_0_0= RULE_INT )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1619:1: (lv_integerSymbol_0_0= RULE_INT )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1620:3: lv_integerSymbol_0_0= RULE_INT
            {
            lv_integerSymbol_0_0=(Token)input.LT(1);
            match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleIntegerLiteralExp3012); 

            			createLeafNode(grammarAccess.getIntegerLiteralExpAccess().getIntegerSymbolINTTerminalRuleCall_0(), "integerSymbol"); 
            		

            	        if (current==null) {
            	            current = factory.create(grammarAccess.getIntegerLiteralExpRule().getType().getClassifier());
            	            associateNodeWithAstElement(currentNode, current);
            	        }
            	        try {
            	       		set(
            	       			current, 
            	       			"integerSymbol",
            	        		lv_integerSymbol_0_0, 
            	        		"INT", 
            	        		lastConsumedNode);
            	        } catch (ValueConverterException vce) {
            				handleValueConverterException(vce);
            	        }
            	    

            }


            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleIntegerLiteralExp


    // $ANTLR start entryRuleOperationCallExp
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1650:1: entryRuleOperationCallExp returns [EObject current=null] : iv_ruleOperationCallExp= ruleOperationCallExp EOF ;
    public final EObject entryRuleOperationCallExp() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleOperationCallExp = null;


        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1651:2: (iv_ruleOperationCallExp= ruleOperationCallExp EOF )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1652:2: iv_ruleOperationCallExp= ruleOperationCallExp EOF
            {
             currentNode = createCompositeNode(grammarAccess.getOperationCallExpRule(), currentNode); 
            pushFollow(FOLLOW_ruleOperationCallExp_in_entryRuleOperationCallExp3052);
            iv_ruleOperationCallExp=ruleOperationCallExp();
            _fsp--;

             current =iv_ruleOperationCallExp; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleOperationCallExp3062); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end entryRuleOperationCallExp


    // $ANTLR start ruleOperationCallExp
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1659:1: ruleOperationCallExp returns [EObject current=null] : ( ( ( (lv_referresOperation_0_0= ruleOperation ) ) ( (lv_argument_1_0= ruleOCLExpression ) ) ) | ( '(' ( (lv_argument1_3_0= ruleOCLExpression ) ) ( (lv_referresOperation_4_0= ruleOperation ) ) ( (lv_argument2_5_0= ruleOCLExpression ) ) ')' ) ) ;
    public final EObject ruleOperationCallExp() throws RecognitionException {
        EObject current = null;

        Enumerator lv_referresOperation_0_0 = null;

        EObject lv_argument_1_0 = null;

        EObject lv_argument1_3_0 = null;

        Enumerator lv_referresOperation_4_0 = null;

        EObject lv_argument2_5_0 = null;


         EObject temp=null; setCurrentLookahead(); resetLookahead(); 
            
        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1664:6: ( ( ( ( (lv_referresOperation_0_0= ruleOperation ) ) ( (lv_argument_1_0= ruleOCLExpression ) ) ) | ( '(' ( (lv_argument1_3_0= ruleOCLExpression ) ) ( (lv_referresOperation_4_0= ruleOperation ) ) ( (lv_argument2_5_0= ruleOCLExpression ) ) ')' ) ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1665:1: ( ( ( (lv_referresOperation_0_0= ruleOperation ) ) ( (lv_argument_1_0= ruleOCLExpression ) ) ) | ( '(' ( (lv_argument1_3_0= ruleOCLExpression ) ) ( (lv_referresOperation_4_0= ruleOperation ) ) ( (lv_argument2_5_0= ruleOCLExpression ) ) ')' ) )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1665:1: ( ( ( (lv_referresOperation_0_0= ruleOperation ) ) ( (lv_argument_1_0= ruleOCLExpression ) ) ) | ( '(' ( (lv_argument1_3_0= ruleOCLExpression ) ) ( (lv_referresOperation_4_0= ruleOperation ) ) ( (lv_argument2_5_0= ruleOCLExpression ) ) ')' ) )
            int alt10=2;
            int LA10_0 = input.LA(1);

            if ( ((LA10_0>=39 && LA10_0<=49)) ) {
                alt10=1;
            }
            else if ( (LA10_0==12) ) {
                alt10=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("1665:1: ( ( ( (lv_referresOperation_0_0= ruleOperation ) ) ( (lv_argument_1_0= ruleOCLExpression ) ) ) | ( '(' ( (lv_argument1_3_0= ruleOCLExpression ) ) ( (lv_referresOperation_4_0= ruleOperation ) ) ( (lv_argument2_5_0= ruleOCLExpression ) ) ')' ) )", 10, 0, input);

                throw nvae;
            }
            switch (alt10) {
                case 1 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1665:2: ( ( (lv_referresOperation_0_0= ruleOperation ) ) ( (lv_argument_1_0= ruleOCLExpression ) ) )
                    {
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1665:2: ( ( (lv_referresOperation_0_0= ruleOperation ) ) ( (lv_argument_1_0= ruleOCLExpression ) ) )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1665:3: ( (lv_referresOperation_0_0= ruleOperation ) ) ( (lv_argument_1_0= ruleOCLExpression ) )
                    {
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1665:3: ( (lv_referresOperation_0_0= ruleOperation ) )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1666:1: (lv_referresOperation_0_0= ruleOperation )
                    {
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1666:1: (lv_referresOperation_0_0= ruleOperation )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1667:3: lv_referresOperation_0_0= ruleOperation
                    {
                     
                    	        currentNode=createCompositeNode(grammarAccess.getOperationCallExpAccess().getReferresOperationOperationEnumRuleCall_0_0_0(), currentNode); 
                    	    
                    pushFollow(FOLLOW_ruleOperation_in_ruleOperationCallExp3109);
                    lv_referresOperation_0_0=ruleOperation();
                    _fsp--;


                    	        if (current==null) {
                    	            current = factory.create(grammarAccess.getOperationCallExpRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode.getParent(), current);
                    	        }
                    	        try {
                    	       		set(
                    	       			current, 
                    	       			"referresOperation",
                    	        		lv_referresOperation_0_0, 
                    	        		"Operation", 
                    	        		currentNode);
                    	        } catch (ValueConverterException vce) {
                    				handleValueConverterException(vce);
                    	        }
                    	        currentNode = currentNode.getParent();
                    	    

                    }


                    }

                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1689:2: ( (lv_argument_1_0= ruleOCLExpression ) )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1690:1: (lv_argument_1_0= ruleOCLExpression )
                    {
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1690:1: (lv_argument_1_0= ruleOCLExpression )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1691:3: lv_argument_1_0= ruleOCLExpression
                    {
                     
                    	        currentNode=createCompositeNode(grammarAccess.getOperationCallExpAccess().getArgumentOCLExpressionParserRuleCall_0_1_0(), currentNode); 
                    	    
                    pushFollow(FOLLOW_ruleOCLExpression_in_ruleOperationCallExp3130);
                    lv_argument_1_0=ruleOCLExpression();
                    _fsp--;


                    	        if (current==null) {
                    	            current = factory.create(grammarAccess.getOperationCallExpRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode.getParent(), current);
                    	        }
                    	        try {
                    	       		set(
                    	       			current, 
                    	       			"argument",
                    	        		lv_argument_1_0, 
                    	        		"OCLExpression", 
                    	        		currentNode);
                    	        } catch (ValueConverterException vce) {
                    				handleValueConverterException(vce);
                    	        }
                    	        currentNode = currentNode.getParent();
                    	    

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1714:6: ( '(' ( (lv_argument1_3_0= ruleOCLExpression ) ) ( (lv_referresOperation_4_0= ruleOperation ) ) ( (lv_argument2_5_0= ruleOCLExpression ) ) ')' )
                    {
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1714:6: ( '(' ( (lv_argument1_3_0= ruleOCLExpression ) ) ( (lv_referresOperation_4_0= ruleOperation ) ) ( (lv_argument2_5_0= ruleOCLExpression ) ) ')' )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1714:8: '(' ( (lv_argument1_3_0= ruleOCLExpression ) ) ( (lv_referresOperation_4_0= ruleOperation ) ) ( (lv_argument2_5_0= ruleOCLExpression ) ) ')'
                    {
                    match(input,12,FOLLOW_12_in_ruleOperationCallExp3148); 

                            createLeafNode(grammarAccess.getOperationCallExpAccess().getLeftParenthesisKeyword_1_0(), null); 
                        
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1718:1: ( (lv_argument1_3_0= ruleOCLExpression ) )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1719:1: (lv_argument1_3_0= ruleOCLExpression )
                    {
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1719:1: (lv_argument1_3_0= ruleOCLExpression )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1720:3: lv_argument1_3_0= ruleOCLExpression
                    {
                     
                    	        currentNode=createCompositeNode(grammarAccess.getOperationCallExpAccess().getArgument1OCLExpressionParserRuleCall_1_1_0(), currentNode); 
                    	    
                    pushFollow(FOLLOW_ruleOCLExpression_in_ruleOperationCallExp3169);
                    lv_argument1_3_0=ruleOCLExpression();
                    _fsp--;


                    	        if (current==null) {
                    	            current = factory.create(grammarAccess.getOperationCallExpRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode.getParent(), current);
                    	        }
                    	        try {
                    	       		set(
                    	       			current, 
                    	       			"argument1",
                    	        		lv_argument1_3_0, 
                    	        		"OCLExpression", 
                    	        		currentNode);
                    	        } catch (ValueConverterException vce) {
                    				handleValueConverterException(vce);
                    	        }
                    	        currentNode = currentNode.getParent();
                    	    

                    }


                    }

                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1742:2: ( (lv_referresOperation_4_0= ruleOperation ) )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1743:1: (lv_referresOperation_4_0= ruleOperation )
                    {
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1743:1: (lv_referresOperation_4_0= ruleOperation )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1744:3: lv_referresOperation_4_0= ruleOperation
                    {
                     
                    	        currentNode=createCompositeNode(grammarAccess.getOperationCallExpAccess().getReferresOperationOperationEnumRuleCall_1_2_0(), currentNode); 
                    	    
                    pushFollow(FOLLOW_ruleOperation_in_ruleOperationCallExp3190);
                    lv_referresOperation_4_0=ruleOperation();
                    _fsp--;


                    	        if (current==null) {
                    	            current = factory.create(grammarAccess.getOperationCallExpRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode.getParent(), current);
                    	        }
                    	        try {
                    	       		set(
                    	       			current, 
                    	       			"referresOperation",
                    	        		lv_referresOperation_4_0, 
                    	        		"Operation", 
                    	        		currentNode);
                    	        } catch (ValueConverterException vce) {
                    				handleValueConverterException(vce);
                    	        }
                    	        currentNode = currentNode.getParent();
                    	    

                    }


                    }

                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1766:2: ( (lv_argument2_5_0= ruleOCLExpression ) )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1767:1: (lv_argument2_5_0= ruleOCLExpression )
                    {
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1767:1: (lv_argument2_5_0= ruleOCLExpression )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1768:3: lv_argument2_5_0= ruleOCLExpression
                    {
                     
                    	        currentNode=createCompositeNode(grammarAccess.getOperationCallExpAccess().getArgument2OCLExpressionParserRuleCall_1_3_0(), currentNode); 
                    	    
                    pushFollow(FOLLOW_ruleOCLExpression_in_ruleOperationCallExp3211);
                    lv_argument2_5_0=ruleOCLExpression();
                    _fsp--;


                    	        if (current==null) {
                    	            current = factory.create(grammarAccess.getOperationCallExpRule().getType().getClassifier());
                    	            associateNodeWithAstElement(currentNode.getParent(), current);
                    	        }
                    	        try {
                    	       		set(
                    	       			current, 
                    	       			"argument2",
                    	        		lv_argument2_5_0, 
                    	        		"OCLExpression", 
                    	        		currentNode);
                    	        } catch (ValueConverterException vce) {
                    				handleValueConverterException(vce);
                    	        }
                    	        currentNode = currentNode.getParent();
                    	    

                    }


                    }

                    match(input,14,FOLLOW_14_in_ruleOperationCallExp3221); 

                            createLeafNode(grammarAccess.getOperationCallExpAccess().getRightParenthesisKeyword_1_4(), null); 
                        

                    }


                    }
                    break;

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleOperationCallExp


    // $ANTLR start ruleDirectionKind
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1802:1: ruleDirectionKind returns [Enumerator current=null] : ( ( 'in' ) | ( 'inout' ) | ( 'out' ) ) ;
    public final Enumerator ruleDirectionKind() throws RecognitionException {
        Enumerator current = null;

         setCurrentLookahead(); resetLookahead(); 
        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1806:6: ( ( ( 'in' ) | ( 'inout' ) | ( 'out' ) ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1807:1: ( ( 'in' ) | ( 'inout' ) | ( 'out' ) )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1807:1: ( ( 'in' ) | ( 'inout' ) | ( 'out' ) )
            int alt11=3;
            switch ( input.LA(1) ) {
            case 34:
                {
                alt11=1;
                }
                break;
            case 35:
                {
                alt11=2;
                }
                break;
            case 36:
                {
                alt11=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("1807:1: ( ( 'in' ) | ( 'inout' ) | ( 'out' ) )", 11, 0, input);

                throw nvae;
            }

            switch (alt11) {
                case 1 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1807:2: ( 'in' )
                    {
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1807:2: ( 'in' )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1807:4: 'in'
                    {
                    match(input,34,FOLLOW_34_in_ruleDirectionKind3270); 

                            current = grammarAccess.getDirectionKindAccess().getInEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getDirectionKindAccess().getInEnumLiteralDeclaration_0(), null); 
                        

                    }


                    }
                    break;
                case 2 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1813:6: ( 'inout' )
                    {
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1813:6: ( 'inout' )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1813:8: 'inout'
                    {
                    match(input,35,FOLLOW_35_in_ruleDirectionKind3285); 

                            current = grammarAccess.getDirectionKindAccess().getInoutEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getDirectionKindAccess().getInoutEnumLiteralDeclaration_1(), null); 
                        

                    }


                    }
                    break;
                case 3 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1819:6: ( 'out' )
                    {
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1819:6: ( 'out' )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1819:8: 'out'
                    {
                    match(input,36,FOLLOW_36_in_ruleDirectionKind3300); 

                            current = grammarAccess.getDirectionKindAccess().getOutEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getDirectionKindAccess().getOutEnumLiteralDeclaration_2(), null); 
                        

                    }


                    }
                    break;

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleDirectionKind


    // $ANTLR start ruleBool
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1829:1: ruleBool returns [Enumerator current=null] : ( ( 'true' ) | ( 'false' ) ) ;
    public final Enumerator ruleBool() throws RecognitionException {
        Enumerator current = null;

         setCurrentLookahead(); resetLookahead(); 
        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1833:6: ( ( ( 'true' ) | ( 'false' ) ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1834:1: ( ( 'true' ) | ( 'false' ) )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1834:1: ( ( 'true' ) | ( 'false' ) )
            int alt12=2;
            int LA12_0 = input.LA(1);

            if ( (LA12_0==37) ) {
                alt12=1;
            }
            else if ( (LA12_0==38) ) {
                alt12=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("1834:1: ( ( 'true' ) | ( 'false' ) )", 12, 0, input);

                throw nvae;
            }
            switch (alt12) {
                case 1 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1834:2: ( 'true' )
                    {
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1834:2: ( 'true' )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1834:4: 'true'
                    {
                    match(input,37,FOLLOW_37_in_ruleBool3343); 

                            current = grammarAccess.getBoolAccess().getTrueValueEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getBoolAccess().getTrueValueEnumLiteralDeclaration_0(), null); 
                        

                    }


                    }
                    break;
                case 2 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1840:6: ( 'false' )
                    {
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1840:6: ( 'false' )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1840:8: 'false'
                    {
                    match(input,38,FOLLOW_38_in_ruleBool3358); 

                            current = grammarAccess.getBoolAccess().getFalseValueEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getBoolAccess().getFalseValueEnumLiteralDeclaration_1(), null); 
                        

                    }


                    }
                    break;

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleBool


    // $ANTLR start ruleOperation
    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1850:1: ruleOperation returns [Enumerator current=null] : ( ( 'and' ) | ( 'or' ) | ( 'not' ) | ( '<' ) | ( '>' ) | ( '=' ) | ( '<>' ) | ( '+' ) | ( '-' ) | ( '/' ) | ( '*' ) ) ;
    public final Enumerator ruleOperation() throws RecognitionException {
        Enumerator current = null;

         setCurrentLookahead(); resetLookahead(); 
        try {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1854:6: ( ( ( 'and' ) | ( 'or' ) | ( 'not' ) | ( '<' ) | ( '>' ) | ( '=' ) | ( '<>' ) | ( '+' ) | ( '-' ) | ( '/' ) | ( '*' ) ) )
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1855:1: ( ( 'and' ) | ( 'or' ) | ( 'not' ) | ( '<' ) | ( '>' ) | ( '=' ) | ( '<>' ) | ( '+' ) | ( '-' ) | ( '/' ) | ( '*' ) )
            {
            // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1855:1: ( ( 'and' ) | ( 'or' ) | ( 'not' ) | ( '<' ) | ( '>' ) | ( '=' ) | ( '<>' ) | ( '+' ) | ( '-' ) | ( '/' ) | ( '*' ) )
            int alt13=11;
            switch ( input.LA(1) ) {
            case 39:
                {
                alt13=1;
                }
                break;
            case 40:
                {
                alt13=2;
                }
                break;
            case 41:
                {
                alt13=3;
                }
                break;
            case 42:
                {
                alt13=4;
                }
                break;
            case 43:
                {
                alt13=5;
                }
                break;
            case 44:
                {
                alt13=6;
                }
                break;
            case 45:
                {
                alt13=7;
                }
                break;
            case 46:
                {
                alt13=8;
                }
                break;
            case 47:
                {
                alt13=9;
                }
                break;
            case 48:
                {
                alt13=10;
                }
                break;
            case 49:
                {
                alt13=11;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("1855:1: ( ( 'and' ) | ( 'or' ) | ( 'not' ) | ( '<' ) | ( '>' ) | ( '=' ) | ( '<>' ) | ( '+' ) | ( '-' ) | ( '/' ) | ( '*' ) )", 13, 0, input);

                throw nvae;
            }

            switch (alt13) {
                case 1 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1855:2: ( 'and' )
                    {
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1855:2: ( 'and' )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1855:4: 'and'
                    {
                    match(input,39,FOLLOW_39_in_ruleOperation3401); 

                            current = grammarAccess.getOperationAccess().getAndEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getOperationAccess().getAndEnumLiteralDeclaration_0(), null); 
                        

                    }


                    }
                    break;
                case 2 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1861:6: ( 'or' )
                    {
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1861:6: ( 'or' )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1861:8: 'or'
                    {
                    match(input,40,FOLLOW_40_in_ruleOperation3416); 

                            current = grammarAccess.getOperationAccess().getOrEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getOperationAccess().getOrEnumLiteralDeclaration_1(), null); 
                        

                    }


                    }
                    break;
                case 3 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1867:6: ( 'not' )
                    {
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1867:6: ( 'not' )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1867:8: 'not'
                    {
                    match(input,41,FOLLOW_41_in_ruleOperation3431); 

                            current = grammarAccess.getOperationAccess().getNotEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getOperationAccess().getNotEnumLiteralDeclaration_2(), null); 
                        

                    }


                    }
                    break;
                case 4 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1873:6: ( '<' )
                    {
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1873:6: ( '<' )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1873:8: '<'
                    {
                    match(input,42,FOLLOW_42_in_ruleOperation3446); 

                            current = grammarAccess.getOperationAccess().getMenorEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getOperationAccess().getMenorEnumLiteralDeclaration_3(), null); 
                        

                    }


                    }
                    break;
                case 5 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1879:6: ( '>' )
                    {
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1879:6: ( '>' )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1879:8: '>'
                    {
                    match(input,43,FOLLOW_43_in_ruleOperation3461); 

                            current = grammarAccess.getOperationAccess().getMayorEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getOperationAccess().getMayorEnumLiteralDeclaration_4(), null); 
                        

                    }


                    }
                    break;
                case 6 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1885:6: ( '=' )
                    {
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1885:6: ( '=' )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1885:8: '='
                    {
                    match(input,44,FOLLOW_44_in_ruleOperation3476); 

                            current = grammarAccess.getOperationAccess().getIgualEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getOperationAccess().getIgualEnumLiteralDeclaration_5(), null); 
                        

                    }


                    }
                    break;
                case 7 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1891:6: ( '<>' )
                    {
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1891:6: ( '<>' )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1891:8: '<>'
                    {
                    match(input,45,FOLLOW_45_in_ruleOperation3491); 

                            current = grammarAccess.getOperationAccess().getDistintoEnumLiteralDeclaration_6().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getOperationAccess().getDistintoEnumLiteralDeclaration_6(), null); 
                        

                    }


                    }
                    break;
                case 8 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1897:6: ( '+' )
                    {
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1897:6: ( '+' )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1897:8: '+'
                    {
                    match(input,46,FOLLOW_46_in_ruleOperation3506); 

                            current = grammarAccess.getOperationAccess().getSumaEnumLiteralDeclaration_7().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getOperationAccess().getSumaEnumLiteralDeclaration_7(), null); 
                        

                    }


                    }
                    break;
                case 9 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1903:6: ( '-' )
                    {
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1903:6: ( '-' )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1903:8: '-'
                    {
                    match(input,47,FOLLOW_47_in_ruleOperation3521); 

                            current = grammarAccess.getOperationAccess().getRestaEnumLiteralDeclaration_8().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getOperationAccess().getRestaEnumLiteralDeclaration_8(), null); 
                        

                    }


                    }
                    break;
                case 10 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1909:6: ( '/' )
                    {
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1909:6: ( '/' )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1909:8: '/'
                    {
                    match(input,48,FOLLOW_48_in_ruleOperation3536); 

                            current = grammarAccess.getOperationAccess().getDivEnumLiteralDeclaration_9().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getOperationAccess().getDivEnumLiteralDeclaration_9(), null); 
                        

                    }


                    }
                    break;
                case 11 :
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1915:6: ( '*' )
                    {
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1915:6: ( '*' )
                    // ../info.unlp.tesis.transformation/src-gen/info/unlp/tesis/parser/antlr/internal/InternalTransformation.g:1915:8: '*'
                    {
                    match(input,49,FOLLOW_49_in_ruleOperation3551); 

                            current = grammarAccess.getOperationAccess().getMultEnumLiteralDeclaration_10().getEnumLiteral().getInstance();
                            createLeafNode(grammarAccess.getOperationAccess().getMultEnumLiteralDeclaration_10(), null); 
                        

                    }


                    }
                    break;

            }


            }

             resetLookahead(); 
                	lastConsumedNode = currentNode;
                
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end ruleOperation


 

    public static final BitSet FOLLOW_ruleOperationalTransformation_in_entryRuleOperationalTransformation75 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOperationalTransformation85 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleModelType_in_ruleOperationalTransformation131 = new BitSet(new long[]{0x0000000000020800L});
    public static final BitSet FOLLOW_11_in_ruleOperationalTransformation142 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleOperationalTransformation159 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleOperationalTransformation174 = new BitSet(new long[]{0x0000001C00000000L});
    public static final BitSet FOLLOW_ruleModelParameter_in_ruleOperationalTransformation195 = new BitSet(new long[]{0x0000000000006000L});
    public static final BitSet FOLLOW_13_in_ruleOperationalTransformation206 = new BitSet(new long[]{0x0000001C00000000L});
    public static final BitSet FOLLOW_ruleModelParameter_in_ruleOperationalTransformation227 = new BitSet(new long[]{0x0000000000006000L});
    public static final BitSet FOLLOW_14_in_ruleOperationalTransformation239 = new BitSet(new long[]{0x0000000000088002L});
    public static final BitSet FOLLOW_15_in_ruleOperationalTransformation250 = new BitSet(new long[]{0x0000000000080002L});
    public static final BitSet FOLLOW_ruleEntryOperation_in_ruleOperationalTransformation273 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleModelParameter_in_entryRuleModelParameter312 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleModelParameter322 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDirectionKind_in_ruleModelParameter368 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleModelParameter385 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleModelParameter400 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleModelParameter418 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleModelType_in_entryRuleModelType454 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleModelType464 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_17_in_ruleModelType499 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleModelType516 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_ruleModelType531 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleModelType548 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_15_in_ruleModelType563 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOperationBody_in_entryRuleOperationBody601 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOperationBody611 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSeqExp_in_ruleOperationBody656 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEntryOperation_in_entryRuleEntryOperation691 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleEntryOperation701 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_19_in_ruleEntryOperation744 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_20_in_ruleEntryOperation767 = new BitSet(new long[]{0x000000007C400010L});
    public static final BitSet FOLLOW_ruleOperationBody_in_ruleEntryOperation788 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleEntryOperation798 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOCLExpression_in_entryRuleOCLExpression834 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOCLExpression844 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBooleanLiteralExp_in_ruleOCLExpression891 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleImperativeExpression_in_ruleOCLExpression918 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStringLiteralExp_in_ruleOCLExpression945 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIntegerLiteralExp_in_ruleOCLExpression972 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOperationCallExp_in_ruleOCLExpression999 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIfExp_in_entryRuleIfExp1034 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleIfExp1044 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_22_in_ruleIfExp1079 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleIfExp1089 = new BitSet(new long[]{0x0003FFE07C401070L});
    public static final BitSet FOLLOW_ruleOCLExpression_in_ruleIfExp1110 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleIfExp1120 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_23_in_ruleIfExp1130 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_20_in_ruleIfExp1140 = new BitSet(new long[]{0x0003FFE07C401070L});
    public static final BitSet FOLLOW_ruleOCLExpression_in_ruleIfExp1161 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleIfExp1171 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruleIfExp1181 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_20_in_ruleIfExp1191 = new BitSet(new long[]{0x0003FFE07C401070L});
    public static final BitSet FOLLOW_ruleOCLExpression_in_ruleIfExp1212 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleIfExp1222 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAssignExp_in_entryRuleAssignExp1258 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAssignExp1268 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVariable_in_ruleAssignExp1314 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleAssignExp1324 = new BitSet(new long[]{0x0003FFE07C401070L});
    public static final BitSet FOLLOW_ruleOCLExpression_in_ruleAssignExp1345 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleImperativeExpression_in_entryRuleImperativeExpression1381 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleImperativeExpression1391 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBreakExp_in_ruleImperativeExpression1438 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleContinueExp_in_ruleImperativeExpression1465 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleWhileExp_in_ruleImperativeExpression1492 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVariableInitExp_in_ruleImperativeExpression1519 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVariable_in_ruleImperativeExpression1546 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIfExp_in_ruleImperativeExpression1573 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAssignExp_in_ruleImperativeExpression1600 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNullExp_in_ruleImperativeExpression1627 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSeqExp_in_entryRuleSeqExp1662 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSeqExp1672 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleImperativeExpression_in_ruleSeqExp1718 = new BitSet(new long[]{0x0000000000008002L});
    public static final BitSet FOLLOW_15_in_ruleSeqExp1729 = new BitSet(new long[]{0x000000007C400010L});
    public static final BitSet FOLLOW_ruleImperativeExpression_in_ruleSeqExp1750 = new BitSet(new long[]{0x0000000000008002L});
    public static final BitSet FOLLOW_ruleNullExp_in_entryRuleNullExp1790 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNullExp1800 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_26_in_ruleNullExp1842 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBreakExp_in_entryRuleBreakExp1890 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleBreakExp1900 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_27_in_ruleBreakExp1942 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleContinueExp_in_entryRuleContinueExp1990 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleContinueExp2000 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_28_in_ruleContinueExp2042 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleWhileExp_in_entryRuleWhileExp2090 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleWhileExp2100 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_29_in_ruleWhileExp2135 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleWhileExp2145 = new BitSet(new long[]{0x0003FFE07C401070L});
    public static final BitSet FOLLOW_ruleOCLExpression_in_ruleWhileExp2166 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleWhileExp2176 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_20_in_ruleWhileExp2186 = new BitSet(new long[]{0x000000007C400010L});
    public static final BitSet FOLLOW_ruleSeqExp_in_ruleWhileExp2207 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleWhileExp2217 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBooleanLiteralExp_in_entryRuleBooleanLiteralExp2253 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleBooleanLiteralExp2263 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBool_in_ruleBooleanLiteralExp2308 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVariableInitExp_in_entryRuleVariableInitExp2343 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleVariableInitExp2353 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_30_in_ruleVariableInitExp2388 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleVariableWithType_in_ruleVariableInitExp2409 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVariableWithType_in_entryRuleVariableWithType2445 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleVariableWithType2455 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleVariableWithType2497 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleVariableWithType2512 = new BitSet(new long[]{0x0000000380000000L});
    public static final BitSet FOLLOW_ruleDataType_in_ruleVariableWithType2533 = new BitSet(new long[]{0x0000000002000002L});
    public static final BitSet FOLLOW_25_in_ruleVariableWithType2544 = new BitSet(new long[]{0x0003FFE07C401070L});
    public static final BitSet FOLLOW_ruleOCLExpression_in_ruleVariableWithType2565 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDataType_in_entryRuleDataType2603 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDataType2613 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_31_in_ruleDataType2656 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_32_in_ruleDataType2693 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_33_in_ruleDataType2730 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVariable_in_entryRuleVariable2779 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleVariable2789 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleVariable2830 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStringLiteralExp_in_entryRuleStringLiteralExp2870 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleStringLiteralExp2880 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleStringLiteralExp2921 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIntegerLiteralExp_in_entryRuleIntegerLiteralExp2961 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleIntegerLiteralExp2971 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleIntegerLiteralExp3012 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOperationCallExp_in_entryRuleOperationCallExp3052 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOperationCallExp3062 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOperation_in_ruleOperationCallExp3109 = new BitSet(new long[]{0x0003FFE07C401070L});
    public static final BitSet FOLLOW_ruleOCLExpression_in_ruleOperationCallExp3130 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_12_in_ruleOperationCallExp3148 = new BitSet(new long[]{0x0003FFE07C401070L});
    public static final BitSet FOLLOW_ruleOCLExpression_in_ruleOperationCallExp3169 = new BitSet(new long[]{0x0003FF8000000000L});
    public static final BitSet FOLLOW_ruleOperation_in_ruleOperationCallExp3190 = new BitSet(new long[]{0x0003FFE07C401070L});
    public static final BitSet FOLLOW_ruleOCLExpression_in_ruleOperationCallExp3211 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleOperationCallExp3221 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_34_in_ruleDirectionKind3270 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_35_in_ruleDirectionKind3285 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_36_in_ruleDirectionKind3300 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_37_in_ruleBool3343 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_38_in_ruleBool3358 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_39_in_ruleOperation3401 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_40_in_ruleOperation3416 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_41_in_ruleOperation3431 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_42_in_ruleOperation3446 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_43_in_ruleOperation3461 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_44_in_ruleOperation3476 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_45_in_ruleOperation3491 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_46_in_ruleOperation3506 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_47_in_ruleOperation3521 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_48_in_ruleOperation3536 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_49_in_ruleOperation3551 = new BitSet(new long[]{0x0000000000000002L});

}